209.长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。
class Solution {
public int minSubArrayLen(int target, int[] nums) {
int ans = Integer.MAX_VALUE;
int i = 0;
int sum = 0;
int len = 0;
for(int j = 0; j < nums.length; j++){
sum += nums[j];
while(sum >= target){//
len = j - i + 1;
ans = Math.min(ans, len);
sum -= nums[i++];
}
}
return ans == Integer.MAX_VALUE? 0 : ans;
}
}
59螺旋矩阵
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
class Solution {
public int[][] generateMatrix(int n) {
int[][] ans = new int[n][n];
int x = 0, y = 0;
int s = 1, en = 1;
int loop = n/2, mid = n/2;
while(loop-- != 0){
int i = x, j = y;
for(; j < n - en; j++){
ans[x][j] = s++;
}
for(; i < n - en; i++){
ans[i][j] = s++;
}
for(; j >= en; j--){
ans[i][j] = s++;
}
for(; i >= en; i--){
ans[i][j] = s++;
}
en++;
x++;
y++;
}
if(n%2 == 1){
ans[mid][mid] = s;
}
return ans;
}
}
54.螺旋矩阵
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
List<Integer> ans = new ArrayList<Integer>();
int x = 0, y = 0;
int n = matrix.length - 1, m = matrix[0].length - 1;
while(true){
for(int i = y; i <= m; i++){
ans.add(matrix[x][i]);
}
if(++x > n)break;
for(int i = x; i <= n; i++){
ans.add(matrix[i][m]);
}
if(--m < y)break;
for(int i = m; i >= y; i--){
ans.add(matrix[n][i]);
}
if(--n < x)break;
for(int i = n; i >= x; i--){
ans.add(matrix[i][y]);
}
if(++y > m)break;
}
return ans;
}
}