915. 分割数组
int index = 0, leftMax = nums[0], max = nums[0];
for(int i = 1; i < nums.length; i++) {
if(leftMax > nums[i]) {//加上等号,可能会出现没有右数组
index = i;
leftMax = max;
}else {
max = Math.max(max, nums[i]);
}
}
return index + 1;
遍历数组,当有数字小于leftMax时,更新index & leftMax;
否则更新数组遍历最大值 max;
42. 接雨水
建立左右,两个扫描数组(动态规划);
然后求其重合的地方;
for(int i = 1; i < height.length; i++) {
left[i] = Math.max(height[i], left[i - 1]);
}
for(int i = height.length - 2; i >= 0; i--) {
right[i] = Math.max(height[i], right[i + 1]);
}
求其重合的地方:
ans += Math.min(left[i], right[i]) - height[i];
48. 旋转图像
n * n的矩阵;
找规律;
nums[x][y],在旋转后变成位置等于nums[y][n - x - 1];
在新的数组的[y][n - x - 1]位置,填上nums[x][y]即可;