| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> Leetcode 做题思路总结笔记 -> 正文阅读 |
|
[数据结构与算法]Leetcode 做题思路总结笔记 |
206. 反转链表方法一:迭代 在遍历链表时,将当前节点的next指针改为指向前一个节点。 由于节点没有引用其前一个节点,因此必须事先存储其前一个节点。在更改引用之前,还需要存储后一个节点。最后返回新的头引用。 方法二:递归 递归的两个条件: 终止条件是当前节点或者下一个节点==null head.next.next = head 1480. 一维数组的动态和方法:原地修改 每个元素等于前面所有元素的和加上当前元素 724. 寻找数组的中心下标方法:前缀和 记数组的全部元素之和为 total,当遍历到第 i个元素时,设其左侧元素之和为leftsum,因为左右侧和相等,利用此题的公式规律【2*leftsum+nums[i]=total】 当中心索引左侧或右侧没有元素时,即为零个项相加,这在数学上称作「空和」(empty?sum)。在程序设计中我们约定「空和是零」。 因为可能是第一个元素,for循环里需要先if判断,再进行相加求leftsum 21. 合并两个有序链表方法一:递归解法 终止条件:当两个链表都为空时,表示我们对链表已合并完成。 方法二:迭代 876. 链表的中间结点方法:快慢指针 如果有两个中间结点,则返回第二个中间结点。 如果题目要求「在两个中间结点的时候,返回第一个中间结点」 217. 存在重复元素方法一:哈希表? unordered_set 遍历判断是否在哈希表中已经存在,若不存在则存入哈希表,已存在则有重复元素 方法二:排序 排序后,遍历判断是否前后之前有相等的元素 1. 两数之和方法一:暴力求解 两次遍历循环数组,nums[i]+nums[j]==target时返回答案 方法二:哈希表 88. 合并两个有序数组方法一:直接合并后排序 先将数组 nums?2放进数组 nums?1的尾部,然后直接对整个数组进行排序。 方法二:双指针 方法一没有利用数组nums 1与 nums 2已经被排序的性质。为了利用这一性质,我们可以使用双指针方法。这一方法将两个数组看作队列,每次从两个数组头部取出比较小的数字放到结果中。 53. 最大子数组和方法一:暴力求解(超时) 方法二:动态规划 方法三:贪心法 141. 环形链表方法一:哈希表 遍历所有节点,每次遍历到一个节点时,判断该节点此前是否被访问过。 可以使用哈希表来存储所有已经访问过的节点。每次我们到达一个节点,如果该节点已经存在于哈希表中,则说明该链表是环形链表,否则就将该节点加入哈希表中。重复这一过程,直到我们遍历完整个链表即可。 方法二:快慢指针 142. 环形链表 II方法一:哈希表 方法二:快慢指针 当发现slow 与fast 相遇时,再额外使用一个指针ptr。起始,它指向链表头部;随后,它和 slow 每次向后移动一个位置。最终,它们会在入环点相遇。 349. 两个数组的交集方法:哈希表 350. 两个数组的交集 II方法:哈希表 首先遍历第一个数组,并在哈希表中记录第一个数组中的每个数字以及对应出现的次数,然后遍历第二个数组,对于第二个数组中的每个数字,如果在哈希表中存在这个数字,则将该数字添加到答案,并减少哈希表中该数字出现的次数。 为了降低空间复杂度,首先遍历较短的数组并在哈希表中记录每个数字以及对应出现的次数,然后遍历较长的数组得到交集。 121. 买卖股票的最佳时机方法一:暴力求解(超时) 方法二:DP (dynamic programming) DP的思路: 利用原问题与子问题的关系,将其变成 大问题的解 = 小问题的解的函数, 从而将问题变成size的扩展即可,当size到达最大后,原问题解决了。 用一个变量记录一个历史最低价格 minprice,可以假设股票是在那天买的。那么在第 i 天卖出股票能得到的利润就是 prices[i] - minprice。只需要遍历价格数组一遍,记录历史最低点,然后在每一天考虑这么一个问题:如果是在历史最低点买进的,那么我今天卖出能赚多少钱?当考虑完所有天数之时,就得到了最好的答案。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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 23:17:20- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |