[刷题记录Day2]Leetcode列表专题

No.1

题目

有序数组的平方

思路

  • 数组本身是非降序,即最小值和最大值在数组的两端
  • 非降序数组每个元素平方后,最大值在两端,最小值在中部
  • 双指针比较数组两端最大值的大小,提取出最大的。移动双指针,然后得到次大,次次大,逐步得到结果
  • 注意left==right是有意义的,即待处理数组只有一个元素,就是最中间(也是最小)的元素

代码

public static int[] sortedSquares(int[] nums) {  
    int len = nums.length;  
    int left = 0, right = len - 1;  
    int[] res = new int[len];  
    int res_index = len - 1;  
    while (left <= right && res_index >= 0) {  
        int sq_left = nums[left] * nums[left];  
        int sq_right = nums[right] * nums[right];  
        // 选大的,写入res数组  
        if (sq_left > sq_right) {  
            res[res_index--] = sq_left;  
            left++;  
        } else {  
            res[res_index--] = sq_right;  
            right--;  
        }  
    }  
    return res;  
}

No.2

题目

长度最小的子数组

思路

  • 双指针控制子数组窗口
  • 数字从窗口右边入,左边出
  • 从整体的数组来看,right是一直在向右滑动的,可以用for循环来控制right递增

代码

public int minSubArrayLen(int target, int[] nums) {  
    int len = nums.length;  
    int sum = 0, min = Integer.MAX_VALUE;  
    int left = 0, right = 0;  
    for (; right < len; right++) {  
        sum += nums[right];  
        while (sum >= target) {  
            int windowLength = right - left + 1;  
            min = Math.min(min, windowLength);  
            sum -= nums[left++];  
        }  
    }  
    return min == Integer.MAX_VALUE ? 0 : min;  
}

No.3

题目

螺旋矩阵

思路

  • 一个变量控制递增的数字
  • 定义好边界
  • 考虑奇偶边长
  • 严格遵守边界定义,依照定义填充数字
  • 注意起始位置

代码

int[][] matrix = new int[n][n];  
int num = 1;  
  
for (int i = 0; i < n / 2; i++) {  
    // RIGHT, j: column  
    for (int j = i; j < n - i - 1; j++) {  
        matrix[i][j] = num++;  
    }  
    // DOWN, j: row  
    for (int j = i; j < n - i - 1; j++) {  
        matrix[j][n - i - 1] = num++;  
    }  
    // LEFT, j: column  
    for (int j = n - i - 1; j > i; j--) {  
        matrix[n - i - 1][j] = num++;  
    }  
    // UP, j: row  
    for (int j = n - i - 1; j > i; j--) {  
        matrix[j][i] = num++;  
    }  
}  
  
if (n % 2 != 0) {  
    matrix[n / 2][n / 2] = num;  
}  
  
return matrix;
posted @ 2023-06-30 22:37  喜欢毛绒绒的番茄子  阅读(24)  评论(0)    收藏  举报