class Solution { public int[] sortedSquares(int[] nums) { int k = nums.length - 1; int[] numsSort = new int[nums.length]; int i = 0; int j = k; while (i <= j) { if (nums[j] * nums[j] > nums[i] * nums[i]) { numsSort[k--] = nums[j] * nums[j--]; } else { numsSort[k--] = nums[i] * nums[i++]; } } return numsSort; } }
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。
滑动窗口
滑动窗口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
class Solution { public int minSubArrayLen(int target, int[] nums) { int sum = 0, r = 1000000; int i = 0; for (int j = 0; j < nums.length; j++) { sum += nums[j]; while (sum >= target) { r = Math.min(r, j - i + 1); sum -= nums[i++]; } } r = r == 1000000 ? 0 : r; return r; } }
暴力破解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
class Solution { public int minSubArrayLen(int target, int[] nums) { int r = 1000000; for (int i = 0; i < nums.length; i++) { int sum = 0, n = 0; for (int j = i; j < nums.length; j++) { sum += nums[j]; if(sum >= target) { n = j - i + 1; r = r > n ? n : r; break; } } } r = r == 1000000 ? 0 : r; return r; } }
lass Solution { public int[][] generateMatrix(int n) { int loop = 0; // 控制循环次数 int[][] res = new int[n][n]; int start = 0; // 每次循环的开始点(start, start) int count = 1; // 定义填充数字 int i, j;
while (loop++ < n / 2) { // 判断边界后,loop从1开始 // 模拟上侧从左到右(次次要保证左闭右开) for (j = start; j < n - loop; j++) { res[start][j] = count++; }
// 模拟右侧从上到下(次次要保证左闭右开) for (i = start; i < n - loop; i++) { res[i][j] = count++; }