//977
class Solution {
public int[] sortedSquares(int[] nums) {
int head = 0, tail = nums.length-1;
int size = nums.length - 1;
int[] newList = new int [nums.length];
int i = tail;
while (head <= tail){
if (nums[head]*nums[head] > nums[tail]*nums[tail]){
newList[i] = nums[head]*nums[head];
head++;
}else{
newList[i] = nums[tail]*nums[tail];
tail--;
}
i--;
}
return newList;
}
}
//209
class Solution {
public int minSubArrayLen(int target, int[] nums) {
int head = 0, tail = 0 ;
int sum = 0;
// 相当于无穷大
int min = 10000001;
while (tail < nums.length){
sum += nums[tail];
while(head <= tail){
if(sum >= target){
// 产生一个子数组满足条件
if(min > tail - head + 1){
min = tail - head + 1;
}
}else{
break;
}
sum -= nums[head];
head++;
}
tail++;
}
return min == 10000001 ? 0 : min;
}
}
//59
class Solution {
public int[][] generateMatrix(int n) {
int[][] matrix = new int[n][n];
int startX = 0, startY = 0;
int loop = n/2;
int count = 1;
int offset = 1;
int i, j;
if (n%2 == 1){
matrix[n/2][n/2] = n*n;
}
while (loop != 0){
i = startX;
j = startY;
for (j = startY; j < n - offset; j++){
matrix[startX][j] = count++;
}
for (i = startX; i < n - offset; i++){
matrix[i][j] = count++;
}
for (; j > startY; j--){
matrix[i][j] = count++;
}
for (; i > startX; i--){
matrix[i][j] = count++;
}
startX++;
startY++;
offset++;
loop--;
}
return matrix;
}
}