| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 代码随想录算法训练营第二天|907有序数组的平方、209长度最小的子数组、59螺旋矩阵Ⅱ -> 正文阅读 |
|
[数据结构与算法]代码随想录算法训练营第二天|907有序数组的平方、209长度最小的子数组、59螺旋矩阵Ⅱ |
今日学习的文章和视频链接977文章链接: link 977 有数数组的平方看到题目第一想法因为题目是要求对一个非递减顺序的整数数组返回每个数字的平方组成新数组,要求也按非递减顺序排序。有如下想法:
看完代码随想录后的想法代码随想录中提到了我想到的暴力排序,其时间复杂度为O(n + nlogn),但还有一种时间复杂度更低的方法——双指针法。 双指针法思路因为数组是有序的(其中可能包含负数),数组平方后的最大值一定在数组两端,所以可以考虑双指针法,i指向起始位置,j指向终止位置。 需定义一个新数组result,大小和nums一样,使k指向result数组终止位置。 如果 实现过程中遇到的困难对
代码
209 长度最小的子数组看到题目第一想法题目描述: 看完代码随想录后的想法代码随想录推荐的也是滑动窗口法。 滑动窗口的含义就是不断调节子序列的起始位置和终止位置,得出我们想到的结果。 只用一个for循环,这个循环的索引一定是表示滑动窗口的终止位置。 那么活动窗口的起始位置如何移动呢? 如果当前窗口的值大于s,窗口就要向前移动了。 实现过程中遇到的困难思路是正确的,但是实际操作代码的时候关于窗口初始位置如何移动有点困难。 此部分代码如下:
代码
59 螺旋矩阵II看到题目第一想法题目描述: 看完代码随想录后的想法代码随想录里强调的也是要坚持循环不变量原则。 模拟顺时针画矩阵的过程:
由外向内一圈圈的画下去。 在这样的循环中,处理的关键就是边界条件,如果不按照固定的规则进行遍历,那么很容易迷失在循环中。 所以在画每一条边的时候都要坚持一致的左闭右开,或左开右闭原则,这样才能按照统一的规则画下了,不会迷路。 实现过程中遇到的困难代码中的while循环里判断的条件很多,建议画出图形动态的来思考条件的变化。
代码
今日收获1.掌握了双指针法的排序方法,可以和暴力排序say byebye 2.实现滑动窗口时要思考以下三点:
3.在遇到螺旋矩阵问题时,一定要坚持循环不变量原则,避免迷失在循环中 今日学习时长3h |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 20:23:22- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |