双指针
Leetcode: 977
Leetcode: 977: 有序数组的平方
class Solution {
public int [ ] sortedSquares ( int [ ] nums) {
int left = 0 ;
int right = nums. length - 1 ;
int [ ] result = new int [ nums. length] ;
int index = result. length - 1 ;
while ( left <= right) {
if ( nums[ left] * nums[ left] > nums[ right] * nums[ right] ) {
result[ index-- ] = nums[ left] * nums[ left] ;
left++ ;
} else {
result[ index-- ] = nums[ right] * nums[ right] ;
right-- ;
}
}
return result;
}
}
Leetcode: 209
Leetcode: 977: 有序数组的平方
class Solution {
public int minSubArrayLen ( int target, int [ ] nums) {
int left = 0 ;
int sum = 0 ;
int result = Integer . MAX_VALUE ;
for ( int right = 0 ; right < nums. length; right++ ) {
sum += nums[ right] ;
if ( sum>= target) {
result = Math . min ( result, right - left + 1 ) ;
sum -= nums[ left++ ] ;
}
}
return result == Integer . MAX_VALUE ? 0 : result;
}
}
Leetcode: 59
Leetcode: 977: 螺旋矩阵 II
class Solution {
public int [ ] [ ] generateMatrix ( int n) {
int loop = 0 ;
int [ ] [ ] res = new int [ n] [ n] ;
int start = 0 ;
int count = 1 ;
int i, j;
while ( loop++ < n / 2 ) {
for ( j = start; j < n - loop; j++ ) {
res[ start] [ j] = count++ ;
}
for ( i = start; i < n - loop; i++ ) {
res[ i] [ j] = count++ ;
}
for ( ; j >= loop; j-- ) {
res[ i] [ j] = count++ ;
}
for ( ; i >= loop; i-- ) {
res[ i] [ j] = count++ ;
}
start++ ;
}
if ( n % 2 == 1 ) {
res[ start] [ start] = count;
}
return res;
}
}