第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;
    }
posted @ 2022-01-19 15:59  现在开始努力  阅读(30)  评论(0)    收藏  举报