代码随想录 day2 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II
977.有序数组的平方
class Solution {
public int[] sortedSquares(int[] nums) {
int left = 0;
int right = nums.length-1;
int l = nums.length;
int[] result = new int[l];
while(left <= right){
if((nums[left]*nums[left])<(nums[right]*nums[right])){
result[l-1] = nums[right]*nums[right];
l--;
right--;
}
else{
result[l-1] = nums[left]*nums[left];
l--;
left ++;
}
}
return result;
}
}
注意: java新建数组用的是new int[数组长度];
class Solution {
public int minSubArrayLen(int target, int[] nums) {
int slow = 0;
int result = Integer.MAX_VALUE;
int sum = 0;
for(int fast = 0;fast<nums.length ;fast++){
sum+=nums[fast];
while(sum>target){
sum -=nums[slow];
slow++;
result = Math.min(result,fast-slow+1);
}
}
return result==Integer.MAX_VALUE?0:result;
}
}
注意函数:Integer.MAX_VALUE;Math.min();
螺线矩阵
class Solution {
public int[][] generateMatrix(int n) {
int[][] nums = new int[n][n];
int loop = 0;
int count = 1;
int i ;
int j ;
int start = 0;
while(loop<n/2){
loop++;
for(j = start;j<n-loop;j++){
nums[start][j] = count++;
}
for( i =start;i<n-loop;i++){
nums[i][j] = count++;
}
for( ;j>=loop;j--){
nums[i][j] = count++;
}
for(;i>=loop;i--){
nums[i][j] = count++;
}
start++;
}
if(n%2==1){
nums[start][start] = n*n;
}
return nums;
}
}