第23天--算法(Leetcode 66,69,70,73,75)


66.加一

public int[] plusOne(int[] digits) {         int N = digits.length;         for(int i = N - 1;i >= 0;i --) {             if(digits[i] < 9) {                 digits[i] ++;                 return digits;             }             digits[i] = 0;         }         int ans[] = new int[N + 1];         ans[0] = 1;         return ans;     } 69.Sqrt(x) public int mySqrt(int x) {         if(x == 0) {             return 0;         }         if(x < 3) {             return 1;         }         long L = 0;         long M = 0;         long R = x;         long ans = -1;         while(L <= R) {             M = (L + R) >> 1;             if(M * M <= x) {                 ans = M;                 L = M + 1;             }else {                 R = M - 1;             }         }         return (int)ans;     } 70.爬楼梯 public int climbStairs(int n) {         int dp[] = new int[n + 1];         if(n < 0) {             return 0;         }         if(n == 0 || n == 1 || n == 2) {             return n;         }         dp[1] = 1;         dp[2] = 2;         for(int i = 3;i <= n;i ++) {             dp[i] = dp[i - 1] + dp[i - 2];         }         return dp[n];     } 73.矩阵置零 public void setZeroes(int[][] matrix) {         boolean rowisZero = false;         boolean colisZero = false;         for(int j = 0;j < matrix[0].length;j ++) {             if(matrix[0][j] == 0) {                 rowisZero = true;                 break;             }         }                  for(int i = 0;i < matrix.length;i ++) {             if(matrix[i][0] == 0) {                 colisZero = true;                 break;             }         }                  for(int i = 1;i < matrix.length;i ++) {             for(int j = 1;j < matrix[0].length;j ++) {                 if(matrix[i][j] == 0) {                     matrix[i][0] = 0;                     matrix[0][j] = 0;                 }             }         }         for(int i = 1;i < matrix.length;i ++) {             if(matrix[i][0] == 0) {                 for(int j = 1;j < matrix[0].length;j ++) {                     matrix[i][j] = 0;                 }             }         }         for(int j = 1;j < matrix[0].length;j ++) {             if(matrix[0][j] == 0) {                 for(int i = 1;i < matrix.length;i ++) {                     matrix[i][j] = 0;                 }             }         }         if(rowisZero) {             for(int j = 0;j < matrix[0].length;j ++) {                 matrix[0][j] = 0;             }         }         if(colisZero) {             for(int i = 0;i < matrix.length;i ++) {                 matrix[i][0] = 0;             }         }     } 75.颜色分类 public void sortColors(int[] nums) {         int index = 0;         int less = -1;         int more = nums.length;         while(index < more) {             if(nums[index] == 1) {                 index ++;             }else if(nums[index] == 0) {                 swap(nums,index ++,++ less);             }else {                 swap(nums,index,-- more);             }         }     }     public void swap(int arr[],int x,int y) {         int temp = arr[x];         arr[x] = arr[y];         arr[y] = temp;     }