解题思路:
- 使用滑动窗口,rihgt在变动时,left也跟着边。
- 当
right为1时或者left到right中的0个数小于k,不断移动rihgt - 当
right为0,由于上一个条件判断为right < k。因此此时left与right中间的0的个数等于k。
故更新res
更新left,直到left指向第一个0的后一位
8/7/23Less than 1 minute
解题思路:
right为1 时或者 left到right中的0个数小于k,不断移动rihgtright为0 ,由于上一个条件判断为 right < k。因此此时left与right中间的0的个数等于k。更新res更新left,直到left指向第一个0的后一位class Solution {
public int largestAltitude(int[] gain) {
int res = 0;
int high = 0;
for (int i : gain) {
high += i;
res = Math.max(high,res);
}
return res;
}
}
解法:中序遍历
class Solution {
int num = 0;
int res;
public int kthSmallest(TreeNode root, int k) {
if(root.left != null) {
kthSmallest(root.left, k);
}
num++;
if(num == k) res = root.val;
if(root.right != null) {
kthSmallest(root.right, k);
}
return res;
}
}
原数组: [1 2 3 4]
左部分的乘积: 1 1 12 123
右部分的乘积: 234 34 4 1
结果: 1234 134 124 1231
class Solution {
public int pivotIndex(int[] nums) {
int len = nums.length;
int sum = 0;
for(int num : nums) sum += num;
int mid = 0;
int left = 0;
for(;mid<len;mid++){
left+=nums[mid];
if(left == sum - left + nums[mid]){
return mid;
}
}
return -1;
}
}