使用JS ES6的Map(),涉及到了里面的好多方法,全当补习啦·~~~ var frequencySort = function(s) { const map=new Map(); for(let ch of s){ if(!map.get(ch)) map.set(ch,1); else map.set(ch,map.get(ch)+1);...
使用JS ES6的Map(),涉及到了里面的好多方法,全当补习啦·~~~ var frequencySort = function(s) { const map=new Map(); for(let ch of s){ if(!map.get(ch)) map.set(ch,1); else map.set(ch,map.get(ch)+1);...
力扣网原题,可用于求职刷题,每个程序代码都正确。
一开始忘记了加else,调试了好久都木有找出问题,呜呜呜呜呜呜呜呜呜呜呜,细心啊啊啊啊~ var letterCombinations = function(digits) { const dict={'2':'abc','3':'def','4':'ghi','5':'jkl','6':'mno','7':'pqr...
DFS var numIslands = function(grid) { let m=grid.length; if(m==0) return 0; let n=grid[0].length; let direction=[[-1,0],[0,-1],[1,0],[0,1]]; let count=0; for(var i=0;i<...i...
标签: 代码
js代码-力扣第七题
被围绕的区间不会存在于边界上,换句话说,任何边界上的'O'都不会被填充为'X'。 任何不在边界上,或不与边界上的'O'相连的'O'最终都会被填充为'X'。如果两个元素在水平或垂直方向相邻,则称它们是“相连”的。...
Backtracking var binaryTreePaths = function(root) { var res=[]; backtracking([],root); return res; function backtracking(temp,node){ if(node==null) return;... temp.push(node.v...
var combinationSum2 = function(candidates, target) { candidates.sort((a,b)=>a-b); let n=candidates.length; let res=[]; backtracking(0,[],target); return res;... function backt...
var partitionLabels = function(S) { let len=S.length; if(!len) return []; let i=0,ans=[],range=[0,0]; while(i<=len){ //之所以这里写等于号是为了最后一截能顺利顶出来。 if(i>...i&...
自己写滴,嘻嘻~妈妈再也不用担心我的回溯了,QAQ~~ var subsetsWithDup = function(nums) { nums.sort((a,b)=>a-b); let res=[]; backtracking(0,[]);... function backtracking(start,temp){ ...
细节超级多,多多注意。 可以是0.0.4.6;但不可以是01.01.03.09.。。 var restoreIpAddresses = function(s) { var res=[]; helper("",s,res,0); return res; };... if(k==4||s.length==0)...
BFS var ladderLength = function(beginWord, endWord, wordList) { let dict=new Set(wordList); if(!dict.has(endWord)) return 0; queue=[];... queue.push(beginWord);... let len=beginWord.le...
自己写出来滴,有进步,嘻嘻~ var combinationSum3 = function(k, n) { let res=[]; backtracking(1,[],n); return res; function backtracking(start,temp,target){ if(target==0&...temp.lengt...
这种输入数组有重复元素的情况,就需要给一个visited的boolean数组了。 var permuteUnique = function(nums) { nums.sort((a,b)=>a-b); let n=nums.length; let res=[];... let visited=[...Array(n)].map(_=&...
DFS 万事开头难,哈哈,现在好爱DFS,通俗易懂~~ var findCircleNum = function(M) { let n=M.length; if(n==0) return 0; let circle=0; let visited=[...Array(n)].map(_=>false);...i++...
回溯。(回溯跟深广度搜索非常类似) 1.回溯一般是需要具体答案时使用,且有修改还原某些值; 2.DFS,BFS一般用于只需要一个yes or no的回答时。 var exist = function(board, word) { if(word.length==0) return ...
分治算法 var diffWaysToCompute = function(input) { let ways=[]; for(var i=1;i<input.length;i++){ var c=input.charAt(i); if(c=='+'||c=='-'||c=='*'){ var left=diffWa...
双指针法,这题虽然很容易有个大概的思路,但是写起来容易出错; 主要就是要机智一点写另外一个helper函数~ var validPalindrome = function(s) { var p1=0,p2=s.length-1; while(p1<p2){ if(s.charAt(p1)=...
从边缘往里面考虑 var pacificAtlantic = function(matrix) { let m=matrix.length; let direction=[[-1,0],[1,0],[0,-1],[0,1]]; if(m==0) return []; let res=[];... let n=matrix[0].length;...
DFS 在程序实现 DFS 时需要考虑以下问题: 栈:用栈来保存当前节点信息,当遍历新节点返回时能够继续遍历当前节点。可以使用递归栈。 标记:和 BFS 一样同样需要对已经遍历过的节点进行标记。 ...
二分,千注意万注意啊,JS里做除法,算出是浮点数结果就是浮点数~~ 在循环条件为 l <= h 并且循环退出时,h 总是比 l 小1,也就是说 h = 2,l = 3,因此最后的返回值应该为 h 而不是 l。 ...
优先考虑令 nums[i - 1] = nums[i]; 比较特别的情况就是:nums[i] < nums[i - 2],只能修改 nums[i] = nums[i - 1] var checkPossibility = function(nums) { var count=0; for(var i=1;...i++...
贪心思想,先将数组按尾巴大小排序,再依次判断后面的头跟“前面”的尾巴的大小关系,用总数减去顺利数,即得到cut数。 var eraseOverlapIntervals = function(intervals) { if(intervals.length==0) return 0;...
贪心算法,先排序,优先满足欲望小的孩子~~~ 这两天真的是深刻意识到,我家的JS虽然好用,但在有的方面就是比较"傲娇",比如数字数组排序就不可以直接array.sort();而是 array.sort((a,b)=>...
var maxSubArray = function(nums) { if(nums.length==0) return 0; //凡是数组类的,特殊情况永远摆第一~~ var global=nums[0],local=nums[0]; //把索引0处的值赋给各变量的初始值,很巧妙,处理便捷,避免一大堆...
双指针法,另外注意这题没说两数不可以相等,所以判断条件是p1<=p2. var judgeSquareSum = function(c) { var p1=0,p2=Math.floor(Math.sqrt(c)); while(p1<=p2){ var temp=p1*p1+p2*p2; if(temp==c) ...
跟上一题,无重叠区间特别像。我更愿意叫这题穿糖葫芦问题,哈哈,注意擦边的那种也算一个区间,如[3,6]和[6,9]隶属同一串糖葫芦。 var findMinArrowShots = function(points) { if(points.length==0) return 0; ...
var combine = function(n, k) { let res=[]; backtracking(1,[]); return res; function backtracking(start,temp){ if(temp.length==k) res.push([...temp]); for(var i=start;i...
要特别注意while里的条件,特别容易出错; 双指针法,fast指针,slow指针 var hasCycle = function(head) { if(head==null||head.next==null) return false; var fast=head.next,slow=head;...
dp,动态方程:dp[i]=Math.min(dp[i],dp[i-j*j]+1); var numSquares = function(n) { const dp=[...Array(n+1)].map(_=>0); for(let i=1;i<...//最坏的情况就是由若干个1构成;... for(let j...