力扣题解
前端历险记
这个作者很懒,什么都没留下…
展开
-
力扣第24题:两两交换链表中的节点 迭代法分析思路
解题思路迭代法和递归法我认为从本质上看,递归法是“先归纳,后解决”,迭代法则是“先解决,后归纳”。所以这个题其实也就是两个两个解决,直至遍历整个链表。/** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next)原创 2022-04-14 11:04:51 · 432 阅读 · 0 评论 -
力扣第24题:两两交换链表中的节点 递归法分析思路
解题思路思路分析:例如链表A→B→C→D→E→F→G,可以先把A~B看作一个单元,把C及C之后的看作一个单元,先把B指针指向A,A指针指向C,则实现了A、B两个元素的交换,此时再把CD交换,让A指向D,D指向C,C指向E,以此思路递推,即可实现递归算法。递归的三个条件:1.大问题可以拆解为两个小问题。2.子问题和大问题的解决方式是一致的。3.存在最小子问题。此题中:1.把所有相邻节点两两交换(大问题),可以转化为把前两个节点交换,把前两个节点忽略,再把前两个节点交换,不断重复直.原创 2022-04-14 10:28:13 · 738 阅读 · 0 评论 -
力扣第206题:反转链表 递归法分析思路
解题思路递归的三个条件:1.大问题可以拆解为两个小问题。2.子问题和大问题的解决方式是一致的。3.存在最小子问题。代码/** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } */.原创 2022-04-13 15:53:35 · 464 阅读 · 0 评论 -
力扣第206题:反转链表 迭代法分析思路
/** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } *//** * @param {ListNode} head * @return {ListNode} */var reverseList .原创 2022-04-13 15:26:59 · 103 阅读 · 0 评论 -
力扣第203题:移除链表元素 迭代法分析思路
###解题思路一开始看有两种方法,但是其实不知道为什么我个人反而更容易理解递归,迭代的方法我绕了很久才绕清楚,以下分析都是基于我个人当时所遇到的困难来阐述的~/** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null :.原创 2022-04-07 20:00:00 · 528 阅读 · 0 评论 -
力扣第203题:移除链表元素 递归法分析思路
### 解题思路链表的定义跟递归十分契合,所以很多链表的问题是可以用递归来解决的;需要明确的是递归的三大要点:1.递归函数的目的;2.递归函数的结束条件。3.递归函数的表达式/等价关系式。### 代码```javascript/** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * thi原创 2022-04-07 19:30:58 · 614 阅读 · 0 评论 -
力扣第904题:水果成篮 滑动窗口法分析思路
var totalFruit = function(fruits) {let left = 0;//用来保存左窗口边界值。let right = 0;//用来保存右窗口边界值。let result = 0;//用来保存最大子数组长度的可能值。let type1 = fruits[left];//第一种水果。let type2 = fruits[right];//第二种水果while(right < fruits.length){/*由于全部窗口都需要检测, 所以需要不断执行直至右边.原创 2022-04-04 15:48:25 · 221 阅读 · 0 评论 -
力扣第209题:长度最小的子数组 滑动窗口法分析思路
var minSubArrayLen = function(target, nums) {let sum = 0,result = 888888,left = 0,subLen = 0;//sum为窗口内数值之和,left、right分别为窗口的左右边界,result随便取一个取不到的值,//用来保存最终的可能值,由于‘88888’取不到,所以最后检测如果result还是88888说明没有从过程中取得任何可能值。for (let right = 0 ;right < nums.length .原创 2022-04-04 09:46:59 · 167 阅读 · 0 评论 -
力扣209题:长度最小的子数组 暴力法分析思路
var minSubArrayLen = function(target, nums) {let resultarr = [];//空数组 用来保存产生的所有长度可能值。//为表达方便,以下叙述“数组”均指resularr,“长度可能值”均指此时满足条件的数组长度。for(i = 0 ; i < nums.length ; i++){//双层for联合循环暴力遍历 如果不理解去看for双层循环是怎么样的执行顺序。let sum = 0;for(j = i ; j < nums.le.原创 2022-04-02 11:35:15 · 199 阅读 · 0 评论