第一章数组 (今日任务)

977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II ,总结

建议大家先独立做题,然后看视频讲解,然后看文章讲解,然后在重新做一遍题,把题目AC,最后整理成今日当天的博客

拓展题目可以先不做

详细布置

977.有序数组的平方

//方法1:直接排序
class Solution {public int[] sortedSquares(int[] nums) {int[] ans=new int[nums.length];for(int i=0; i<nums.length; ++i){ans[i]=nums[i]*nums[i];}Arrays.sort(ans);//必须大写Areturn ans;}
}

复杂度分析
时间复杂度:O(nlog⁡n),其中 n是数组 nums 的长度。
空间复杂度:O(log⁡n)。除了存储答案的数组以外,我们需要 O(logn) 的栈空间进行排序。

方法2:双指针
class Solution {public int[] sortedSquares(int[] nums) {int[] ans=new int[nums.length];int k=nums.length-1;int i=0,j=nums.length-1;while(i<=j){if (nums[i]*nums[i]>nums[j]*nums[j]){ans[k--]=nums[i]*nums[i];++i;}else{ans[k--]=nums[j]*nums[j];--j;}}return ans;}
}

这个题我一开始只写了k–而没不是ans[k–],所以运行的结果一直没成功排序,切记需要更新什么就写什么。

==题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array/
文章讲解:https://programmercarl.com/0977.%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E5%B9%B3%E6%96%B9.html
视频讲解: https://www.bilibili.com/video/BV1QB4y1D7ep ==

209.长度最小的子数组

//滑动窗口
class Solution {public int minSubArrayLen(int target, int[] nums) {int i=0;    //起始值int sum=0;int k=Integer.MAX_VALUE;for(int j=0;j<nums.length;j++){         //终值sum += nums[j];       //叠加while(sum >= target){        //叠加的值大于等于target才行动k=Math.min(k,j-i+1);          //个数总和 与 当前的k比较,取更小的个数和sum=sum-nums[i];          //这里在缩小范围,为了取到长度最小的子数组,当前叠加的值减去左边不要的起始值i++;     //起始值往右移}}return k ==Integer.MAX_VALUE?0:k;}
}

题目链接:https://leetcode.cn/problems/minimum-size-subarray-sum/
文章讲解:https://programmercarl.com/0209.%E9%95%BF%E5%BA%A6%E6%9C%80%E5%B0%8F%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.html
视频讲解:https://www.bilibili.com/video/BV1tZ4y1q7XE

59.螺旋矩阵II

class 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++;}// 模拟下侧从右到左for (; j >= loop; j--) {res[i][j] = count++;}// 模拟左侧从下到上for (; i >= loop; i--) {res[i][j] = count++;}start++;}if (n % 2 == 1) {res[start][start] = count;}return res;}
}

题目建议: 本题关键还是在转圈的逻辑,在二分搜索中提到的区间定义,在这里又用上了。

题目链接:https://leetcode.cn/problems/spiral-matrix-ii/
文章讲解:https://programmercarl.com/0059.%E8%9E%BA%E6%97%8B%E7%9F%A9%E9%98%B5II.html
视频讲解:https://www.bilibili.com/video/BV1SL4y1N7mV/

总结

题目建议:希望大家 也做一个自己 对数组专题的总结

文章链接:https://programmercarl.com/%E6%95%B0%E7%BB%84%E6%80%BB%E7%BB%93%E7%AF%87.html

Leonard代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II。相关推荐

  1. 代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II。

    代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II. 977.有序数组的平方 209. 长度最小的子数组 59. 螺旋矩阵 II 977.有序数组的 ...

  2. 代码随想录算法训练营第二天| 977. 有序数组的平方、209. 长度最小子数组、59.螺旋矩阵II、数组总结

    目录: 977.有序数组的平方 209.长度最小的子数组 1.暴力输出法 2.滑动窗口法 59.螺旋矩阵II 总结: 今日收获: 977.有序数组的平方 因为是递增且有负数的数组,那么他们的平方如果还 ...

  3. 代码随想录算法训练营第二天| 977有序数组平方、207最小子数组、59螺旋矩阵II。

    977.有序数组的平方 力扣题目链接 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序. 示例 1: 输入:nums = [-4,-1, ...

  4. 代码随想录算法训练营第二天| 977. 有序数组的平方、209.长度最小的子数组、59.螺旋矩阵II 。

    977. 有序数组的平方 题目链接 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序. 暴力解法: class Solution {pu ...

  5. 随想录一期 day2 [977.有序数组的平方|209. 长度最小的子数组|59.螺旋矩阵II(剥洋葱)]

    977.有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序. 思路 递增数组,平方后最大值一定在最左侧或者最右侧,可想到– ...

  6. 977. 有序数组的平方|209. 长度最小的子数组|59. 螺旋矩阵 II

    977. 有序数组的平方 原理 准备:双指针.一个空数组.双指针指向的两个元素作比较,更大的数平方之后,放入空数组的尾部空位. 图解 其实这题的指针有两种方法: 从两边向中间靠拢,得到的是由大到小的值 ...

  7. 代码随想录算法训练营第二天 | LeetCode977.有序数组的平方 ,209.长度最小的子数组,59.螺旋矩阵II

    代码随想录算法训练营第二天 | LeetCode977.有序数组的平方 ,209.长度最小的子数组,59.螺旋矩阵II 一. LeetCode977.有序数组的平方 1. 题目链接[LeetCode9 ...

  8. 代码随想录算法训练营第二天 | LeetCode977有序数组的平方 、209长度最小的子数组、 59.螺旋矩阵II

    --------------------------- 977.有序数组的平方 #include <iostream> #include <algorithm> #includ ...

  9. 代码随想录算法训练营第二天|LeetCode977.有序数组的平方,209.长度最小的子数组, 59.螺旋矩阵II

    题目连接:977.有序数组的平方 暴力法:将数组所有元素平方然后再排序(未利用题目条件:原始数组按照非降序排列) 双指针法:数组中各元素符号有三种情况:①所有元素非负(将数组中元素平方即可).②所有元 ...

最新文章

  1. User Profile Data Web Part 读取属性字段
  2. 迁移学习之VGG16和VGG19
  3. R Learnilng 十八讲13-17
  4. PHP 面向对象:类的属性
  5. Linux系统程序包管理工具 RPM
  6. Android ConstraintLayout约束布局的理解与使用
  7. mac 多java环境变量配置_java_Mac安装多个JDK版本并设置环境变量
  8. Spring配置文件中的细节
  9. 一次CMS GC问题排查过程(理解原理+读懂GC日志)
  10. web应用服务器计算资源核算,浅谈网络计算与应用.doc
  11. 日志中的秘密:Windows登录类型
  12. 教你怎么使用Jmail发送匿名的邮件(不要身份认证)
  13. 【C++】凯撒密码 实现加密与解密
  14. 2021年8月21日 Python图像全景拼接
  15. 手机如何连接远程桌面?
  16. Linux默认的系统管理账号是(),Linux系统管理用户账号详解
  17. linux超级块编辑,在EXT4 linux系统上模拟丢失的超级块错误
  18. libeigen3-dev和eigen有什么区别
  19. 知识图谱可视化工具选型
  20. css 友情链接效果,常用友情链接代码(带样式)

热门文章

  1. CSS兼容各个浏览器
  2. 机械手-自动送料机械手的设计【说明书(论文)+CAD图纸+液压系统+开题报告+外文翻译+答辩ppt)
  3. OpenCasCade学习笔记(三):加载显示STEP格式图片,并实现平移、缩放和旋转操作
  4. 用 iperf 测试网卡吞吐率
  5. 海康相机主码流子码流
  6. 关于C语言中逆序数的计算
  7. 求助:如何批量修改代码
  8. 朴素贝叶斯实现书籍分类
  9. 【L610】广和通L610 4G LTE Cat.1模块在树莓派下的联网演示
  10. 使用js添加script标签