//方法一 ES6
var a = 1, b = 2;
[a,b] = [b,a];
console.log(a,b)
// 方法二 異或運算,同爲0或者同爲1都爲0,10爲1
var c = 3, d = 4;
c = c ^ d;
d = c ^ d;
c = c ^ d;
console.log(c,d)複製代碼
例子:數組
a='34';b='1234567'; // 返回 2 a='35';b='1234567'; // 返回 -1 a='355';b='12354355'; // 返回 5 isContain(a,b);複製代碼
答案:bash
function isContain(a, b) { for (let i in b) { if (a[0] === b[i]) { let tmp = true; for (let j in a) { if (a[j] !== b[~~i + ~~j]) { tmp = false; } } if (tmp) { return i; } } } return -1; }複製代碼
例子:markdown
輸入 : afjghdfraaaasdenas
輸出 : a複製代碼
答案:oop
function findMaxDuplicateChar(str) { if(str.length == 1) { return str; } let charObj = {}; for(let i=0;i<str.length;i++) { if(!charObj[str.charAt(i)]) { charObj[str.charAt(i)] = 1; }else{ charObj[str.charAt(i)] += 1; } } let maxChar = '', maxValue = 1; for(var k in charObj) { if(charObj[k] >= maxValue) { maxChar = k; maxValue = charObj[k]; } } return maxChar; } module.exports = findMaxDuplicateChar;複製代碼
例子:ui
輸入 [10,5,11,7,8,9]
輸出 6複製代碼
答案:spa
function getMaxProfit(arr) { var minPrice = arr[0]; var maxProfit = 0; for (var i = 0; i < arr.length; i++) { var currentPrice = arr[i]; minPrice = Math.min(minPrice, currentPrice); var potentialProfit = currentPrice - minPrice; maxProfit = Math.max(maxProfit, potentialProfit); } return maxProfit; }複製代碼
方案一:code
function fn(n){ var num1 = 1, num2= 1, num3 = 0; for(var i=0;i<n-2;i++){ num3 = num1+num2; num1 = num2; num2 = num3; } return num3; } console.log(fn(7)) //13複製代碼
方案二:orm
function fn(n){ if(n<=2){ return 1; } return fn(n-1)+fn(n-2); } console.log(fn(7)) //13複製代碼
例子:視頻
將要查找的值每次與中間值比較,大於中間值,則在右邊進行相同的查找,小於中間值則在左邊進行比較查找,找到返回索引值,沒找到返回-1。
1.非遞歸:遞歸
function binarySearch(target,arr){ var start = 0; var end = arr.length-1; while(start <= end){ var mid = parseInt((start+end)/2); if(target == arr[mid]){ return mid }else if(target > arr[mid]){ start = mid + 1; }else if(target < arr[mid]){ end = mid - 1; }else{ return -1; } } } var arr = [1,2,4,6,8,9,11,34,67]; console.log(binarySearch(11,arr));複製代碼
2.遞歸:
function binarySearch(arr,target,start,end){ var start = start || 0; var end = end || arr.length-1; var mid = parseInt((start+end)/2); if(target == arr[mid]){ return mid }else if(target > arr[mid]){ start = mid + 1; return binarySearch(arr,target,start,end); }else if(target < arr[mid]){ end = mid - 1; return binarySearch(arr,target,start,end); }else{ return -1; } } var arr = [1,2,4,6,8,9,11,34,67]; console.log(binarySearch(arr,11));複製代碼
方案一:
function fn(arr){ var obj = {}; var newArr = []; for(var i=0;i<arr.length;i++){ if(!obj[arr[i]]){ obj[arr[i]] = 1; newArr.push(arr[i]); } } return newArr; } var arr = [2,4,7,3,5,2,8,7]; console.log(fn(arr));複製代碼
方案二:
var arr = [2,4,7,3,5,2,8,7]; var setArr = new Set(arr); var newArr = Array.from(setArr); console.log(newArr);複製代碼
方案三:
var arr =[1,2,2,4,5,4,11,6]; function fn(arr){ var a=arr; for(var i=0;i<a.length;i++){ for(var j=a.length-1;j>i;j--){ if(a[i]==a[j]){ a.splice(j,1); } } } return a; } var s=fn(arr); console.log(s);複製代碼
我錄製的視頻連接: