力扣---2020.4.1

1111. 有效括号的嵌套深度

class Solution {
    public int[] maxDepthAfterSplit(String seq) {
        int[] ans = new int [seq.length()];
        int idx = 0;
        for(char c: seq.toCharArray()) {
            ans[idx++] = c == '(' ? idx & 1 : ((idx + 1) & 1);
        }
        return ans;
    }
}

面试题47. 礼物的最大价值

class Solution {
    public int maxValue(int[][] grid) {
        int m = grid.length, n = grid[0].length;
        for(int i = 0; i < m; i++) {
            for(int j = 0; j < n; j++) {
                if(i == 0 && j == 0) continue;
                if(i == 0) grid[i][j] += grid[i][j - 1] ;
                else if(j == 0) grid[i][j] += grid[i - 1][j];
                else grid[i][j] += Math.max(grid[i][j - 1], grid[i - 1][j]);
            }
        }
        return grid[m - 1][n - 1];
    }
}
class Solution {
    public int maxValue(int[][] grid) {
        int m = grid.length;
        int n = grid[0].length;
        int[] dp = new int[n];
        for(int i = 0;i < m;i++){
            dp[0] = dp[0] + grid[i][0];
            for(int j = 1;j < n;j++){
                dp[j] = Math.max(dp[j],dp[j-1]) + grid[i][j];
            }
        }
        return dp[n-1];
    }
}

面试题11. 旋转数组的最小数字

class Solution {
    public int minArray(int[] numbers) {
        Arrays.sort(numbers);
        return numbers[0];
    }
}
class Solution {
    public int minArray(int[] numbers) {
        int i = 0, j = numbers.length - 1;
        while (i < j) {
            int m = (i + j) / 2;
            if (numbers[m] > numbers[j]) i = m + 1;
            else if (numbers[m] < numbers[j]) j = m;
            else j--;
        }
        return numbers[i];
    }
}
public int minArray(int[] numbers) {
        if(numbers == null || numbers.length == 0) {
            return -1;
        }
        int min = numbers[0];
        for (int i = 0; i < numbers.length - 1; i++) {
            // 由于数组是递增的旋转,那么找到的第一个比前一个元素小的即为当前最小值
            if(numbers[i] > numbers[i+1]) {
                min = numbers[i+1];
            }
        }
        return min;
    }

你知道的越多,你不知道的越多。
有道无术,术尚可求,有术无道,止于术。
如有其它问题,欢迎大家留言,我们一起讨论,一起学习,一起进步

你可能感兴趣的:(数据结构与算法)