代码随想录算法训练营第二天 |977.有序数组的平方 、 209.长度最小的子数组

977.有序数组的平方

题目链接:[977.有序数组的平方][https://leetcode.cn/problems/squares-of-a-sorted-array/]

  • 一开始想的是从中间开始两个指针分别向左右出发,这样可以依照从小到大的顺序。

  • 后来发现把从小到大倒过来找从大到小更简单

209.长度最小的子数组

题目链接:(209.长度最小的子数组)[https://leetcode.cn/problems/minimum-size-subarray-sum/]

  • 暴力法重复过多,时间复杂度O(N2)

  • 在子集合中所有元素和大于等于target的时候进行while循环(不是if!!!),循环中动态调整起始位置

59.螺旋矩阵II

题目链接:59.螺旋矩阵II

  • 分享一个比较直观的代码,不用考虑corner case
class Solution {
    public int[][] generateMatrix(int n) {
        int left = 0, right = n - 1;
        int top = 0; 
        int bottom = n - 1;
        int counter = 1;
        int [][] maxtrix = new int[n][n];
        while(counter !=  n * n + 1 ){
            for(int i = left; i <= right; i++){
                maxtrix[top][i] = counter++;
            }
            top++;
            for(int i = top; i <= bottom; i++){
                maxtrix[i][right] = counter++;
            }
            right--;
            for(int i = right; i >= left; i--){
                maxtrix[bottom][i] = counter++;
            }
            bottom--;
            for(int i = bottom; i >= top; i--){
                maxtrix[i][left] = counter++;
            }
            left++;
        }
        return maxtrix;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容