LeetCode20天算法刷题
Dowell__
路还很长,不要急,也不要停
展开
-
Day12 递归、回溯
力扣全排列,有回溯算法模板总结原创 2022-03-24 22:16:28 · 123 阅读 · 0 评论 -
Day11 递归、回溯
因为后面题越来越难了,每天一题,保证效率77. 组合回溯回溯三部曲:递归函数参数返回值确定终止条件单层递归逻辑学习于代码随想录(讲得真的很好,一个视频大彻大悟)//定义全局变量,方便dfs访问let result = [];//存放结果的数组,是个二维数组let path = [];//存放路径,一维数组,比如[1,2]var combine = function(n, k) { result=[];//把result清空 dfs(n,k,1); return原创 2022-03-23 22:41:26 · 125 阅读 · 0 评论 -
Day10 递归、回溯
21. 合并两个有序链表迭代var mergeTwoLists = function(list1, list2) { const prehead=new ListNode(-1);//定义一个头结点为-1的链表 let pre=prehead;//新链表指针 while(list1!==null&list2!==null){ if(list1.val<=list2.val){ pre.next=list1;原创 2022-03-22 22:03:43 · 294 阅读 · 0 评论 -
Day08 BFS、DFS
617. 合并二叉树DFSvar mergeTrees = function(r1, r2) { if(r1===null && r2){//返回这个位置的结点的值 return r2; } if((r1 && r2===null)||(r1===null &&r2===null)){//返回这个位置的结点的值 return r1; } //把两个树合并到第一棵 r1.val+原创 2022-03-20 19:39:30 · 44 阅读 · 0 评论 -
Day07 dfs、bfs
733. 图像渲染DFSvar floodFill = function(image, sr, sc, newColor) { const m=image.length;//行 const n=image[0].length;//列 const oldColor=image[sr][sc]; if(oldColor===newColor){//判断特殊情况 return image; } const fill=(i,j)=>{原创 2022-03-19 21:15:46 · 63 阅读 · 0 评论 -
Day06 滑动窗口、字符串
3. 无重复字符的最长子串滑动窗口var lengthOfLongestSubstring = function(s) { let str=new Set();//用哈希集合判断是否出现过这个字符 let right=-1;//右指针 let n=s.length;//right需要遍历n次,不需要-1 let res=0; for(let i=0;i<n;i++){ if(i>0){//从第二个字母开始,每一次删除一个原创 2022-03-17 19:44:00 · 53 阅读 · 0 评论 -
Day05 双指针、链表
876. 链表的中间结点快慢指针var middleNode = function(head) { let slow = head;//慢指针 let fast = head;//快指针 while(fast && fast.next){ slow=slow.next; fast=fast.next.next; } return slow;};19. 删除链表的倒数第 N 个结点快慢指针var remove原创 2022-03-16 16:31:36 · 378 阅读 · 0 评论 -
Day04 双指针
344. 反转字符串双指针var reverseString = function(s) { let left=0; let right=s.length-1; let temp=''; while(left<right){ temp=s[left]; s[left]=s[right]; s[right]=temp; left++; right--; }};//另一种写法,原创 2022-03-15 16:48:44 · 376 阅读 · 1 评论 -
Day03 双指针
283. 移动零方法一:直接解法var moveZeroes = function(nums) { let n=0; for(let i=0;i<nums.length;i++){ if(nums[i]!==0){ nums[n]=nums[i]; n++; } } for(let i=n;i<nums.length;i++){ nums[i]=0; }}原创 2022-03-14 14:44:54 · 56 阅读 · 0 评论 -
Day02 双指针
977. 有序数组的平方方法一:暴力排序var sortedSquares = function(nums) { let newNums=[]; for(let i=0;i<nums.length;i++){ newNums.push(nums[i]*nums[i]); } return newNums.sort(function(a,b){return a-b;});//数字排序};方法二: 双指针var sortedSquares = f原创 2022-03-13 11:46:37 · 310 阅读 · 0 评论 -
Day01二分查找
704. 二分查找var search = function(nums, target) { let low=0; let high=nums.length-1; while(low<=high){ let mid=Math.floor((high-low)/2)+low;//这里需要取整 const num=nums[mid]; if(num==target){ return mid;原创 2022-03-12 20:28:19 · 51 阅读 · 0 评论