977压根没想到双指针,直接暴力解决了,然后再根据双指针写了一次
class Solution {
public int[] sortedSquares(int[] nums) {
int [] res = new int [nums.length];
for (int i = 0; i < nums.length; i++) {
res[i] = nums[i] * nums[i];
}
Arrays.sort(res);
return res;
}
public int[] sortedSquares(int[] nums) {
int lo = 0, hi = nums.length - 1;
int[] res = new int[nums.length];
int index = nums.length - 1;
while (lo <= hi){
if (Math.abs(nums[lo]) > Math.abs(nums[hi])){
res[index] = nums[lo] * nums[lo];
lo++;
}else {
res[index] = nums[hi] * nums[hi];
hi--;
}
index--;
}
return res;
}
209.长度最小的子数组
至于滑动窗口,只记得思想了,代码写法模糊不清,所以是复制写的
class Solution {
public int minSubArrayLen(int target, int[] nums) {
int left = 0, right = 0;
int windowSum = 0;
int res = Integer.MAX_VALUE;
while (right < nums.length){
windowSum = windowSum + nums[right];
right++;
while (windowSum >= target && right > left){
res = Math.min(res,right - left);
windowSum = windowSum - nums[left];
left++;
}
}
return res == Integer.MAX_VALUE ? 0 : res;
}
}
螺旋矩阵还没写,今天有事,明天补