有序数组的平方
class Solution {
public int[] sortedSquares(int[] nums) {
/*int left = 0;
int right = nums.length - 1;
int length = nums.length;
int i = 1;
int[] result = new int[nums.length];
while(left <= right) {
if(nums[left]*nums[left] < nums[right]* nums[right]){
result[length - i] = nums[right] * nums[right];
right--;
}else if(nums[left]*nums[left] >= nums[right]*nums[right]){
result[length - i] = nums[left] * nums[left];
left++;
}
i++;
}*/
return this.sortedSquares2(nums);
}
public int[] sortedSquares2(int[] nums) {
int left = 0;
int right = nums.length - 1;
int length = nums.length;
int[] result = new int[nums.length];
int i = 1;
while(left <= right) {
if(nums[left] * nums[left] < nums[right] * nums[right]){
result[length - i] = nums[right] * nums[right];
right--;
i++;
}else {
result[length - i] = nums[left] * nums[left];
left++;
i++;
}
}
return result;
}
}
长度最小的子数组
class Solution {
public int minSubArrayLen(int target, int[] nums) {
/*
int i = 0;
int j = 1;
int minLen = nums.length + 1;
int sum = nums[i];
while (i < nums.length - 1 && j < nums.length) {
if(sum < target) {
sum += nums[j];
j++;
}else {
if(j - i + 1 < minLen) {
minLen = j-i+1;
}
sum -= nums[i];
i++;
}
}
return minLen > nums.length ? 0 : minLen;*/
return minLengthArray(target, nums);
}
public int minLengthArray(int target, int[] nums) {
int slow = 0;
int fast = 1;
int sum = nums[slow];
int minLength = nums.length + 1;
if(sum > target) {
minLength = 1;
}
while(fast < nums.length){
sum += nums[fast];
while(sum >= target) {
if(fast - slow + 1 < minLength) {
minLength = fast - slow + 1;
}
sum -= nums[slow];
slow++;
}
fast++;
}
return minLength > nums.length ? 0 : minLength;
}
}
螺旋矩阵II
class Solution {
public int[][] generateMatrix(int n) {
int l = 0;
int r = n - 1;
int t = 0;
int b = n - 1;
int num = 1;
int tar = n * n;
int[][] result = new int[n][n];
while(num <= tar) {
//从左到右
for(int i = l;i<=r;i++){
result[t][i] = num;
num++;
}
t++;
//从上到下
for(int i = t;i <= b;i++){
result[i][r] = num;
num++;
}
r--;
//从右到左
for(int i = r;i>=l;i--){
result[b][i] = num;
num++;
}
b--;
//从下到上
for(int i = b;i>=t;i--){
result[i][l] = num;
num++;
}
l++;
}
return result;
}
}