algorithm icon indicating copy to clipboard operation
algorithm copied to clipboard

算法复习总结,用JavaScript实现

Results 62 algorithm issues
Sort by recently updated
recently updated
newest added

大佬求更新啊~大佬求更新啊~大佬求更新啊~啊啊啊~

如何从一个数组中快速找出两个数之和等于某一个值的两个数? ### 穷举法 用for循环的嵌套,穷举,这种方法的时间复杂度为O(n^2),是最差的方法 ### 快排+双指针 ``` function pickNumOfSum(arr,sum){ var i,j; var n = arr.length; for(i=0,j=n-1;i

数组
双指针

![image](https://user-images.githubusercontent.com/15058550/42930228-063148b4-8b6f-11e8-90f2-3633341ec8e8.png) ``` /** * @param {number} n * @return {string[][]} */ var solveNQueens = function(n) { var res = []; // 垂直方向的占用情况 var vertical = {}; // 水平方向的占用情况 var horitonal...

递归
回溯
剪枝

![image](https://user-images.githubusercontent.com/15058550/68988390-90affa00-0871-11ea-8f02-4fc9fc150ac8.png) ``` /** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } */ /** * @param {ListNode} head * @return...

链表
快慢指针

![image](https://user-images.githubusercontent.com/15058550/67146674-ff745480-f2bf-11e9-8f77-b95d56b92908.png) ![image](https://user-images.githubusercontent.com/15058550/67146679-131fbb00-f2c0-11e9-995a-2ebe3cfa7549.png) ![image](https://user-images.githubusercontent.com/15058550/67146684-1c108c80-f2c0-11e9-93b7-1d63e6c6f1d3.png) ``` /** * @param {string} s * @return {number} */ var romanToInt = function(s) { let hash = {'I':1, 'IV':4, 'V':5, 'IX':9, 'X':10, 'XL':40, 'L':50, 'XC':90, 'C':100,...

![image](https://user-images.githubusercontent.com/15058550/67146022-414dcc80-f2b9-11e9-8f96-824f170f883d.png) ``` /** * @param {string} s * @return {number} */ var lengthOfLongestSubstring = function(s) { let arr = s.split(''); let max = 0; let temp = []; for(let i=0,j=0;j...

![image](https://user-images.githubusercontent.com/15058550/66702370-92017a80-ed39-11e9-8333-8a66ccbffd95.png) ![image](https://user-images.githubusercontent.com/15058550/66702373-9c237900-ed39-11e9-8683-fea93159e088.png) ``` /** * @param {string} path * @return {string} */ var simplifyPath = function(path) { let pathArr = path.split("/"); let resultArr = []; for(let i =0; i< pathArr.length;i++){...

![image](https://user-images.githubusercontent.com/15058550/66702343-4353e080-ed39-11e9-966d-29dd30b8f578.png) ![image](https://user-images.githubusercontent.com/15058550/66702352-4d75df00-ed39-11e9-83c1-b60b016536cc.png) ``` /** * @param {string} s * @param {number} numRows * @return {string} */ var convert = function(s, numRows) { let result = new Array(numRows).fill(""); let str =...

![image](https://user-images.githubusercontent.com/15058550/66697296-ca3b9580-ed06-11e9-997a-906f4135321a.png) ``` /** * @param {string} s * @return {string} */ var longestPalindrome = function(s) { if(s.length < 2) return s; let newS = s.split('').join("#").split(''); newS.push("#$"); newS.unshift("^#"); let max =...

``` var arr = [1,3,20,5,2,9,6,4,80,9,4,6]; function mergeSort(arr){ let count = 0; function _mergeSort(arr, start, end){ if(start>=end){ return; } var middle = Math.floor((start+end)/2); _mergeSort(arr, start, middle); _mergeSort(arr, middle+1, end); merge(arr, start,...