977.有序数组的平方 ps:双指针/暴力
public int[] sortedSquares(int[] nums) {
for(int i=0;i<nums.length;i++){
nums[i] *= nums[i];
}
int left=0;
int right=nums.length-1;
int write=nums.length-1;
int[] ans = new int[nums.length];
//小的在中间 大的在两头 所以只能从大往小排
while(left<=right){
if(nums[left]>nums[right]){
ans[write--] = nums[left];
left++;
}else{
ans[write--] = nums[right];
right--;
}
}
return ans;
}
209.长度最小的子数组 ps:滑动窗口(本质是双指针)
public int minSubArrayLen(int target, int[] nums) {
int left = 0;
int result = Integer.MAX_VALUE;
int sum=0;
for(int right=0;right<nums.length;right++){
sum+=nums[right];
while(sum>=target){
result = Math.min(result,right-left+1);
sum-=nums[left++];
}
}
return result==Integer.MAX_VALUE?0:result;
}
public int[][] generateMatrix(int n) {
int l=0;
int r=n-1;
int t=0;
int b=n-1;
int num=1;
int nums=n*n;
int[][] res = new int[n][n];
while(num<=nums){
for(int i=l;i<=r;i++) res[t][i] = num++;
t++;
for(int i=t;i<=b;i++) res[i][r] = num++;
r--;
for(int i=r;i>=l;i--) res[b][i] = num++;
b--;
for(int i=b;i>=t;i--) res[i][l] = num++;
l++;
}
return res;
}