從前往后循環(huán)每一個元素
for循環(huán)
for (let i=0;i<arr.length;i++) {
console.log(arr[i]);
}
// arr = [1,2,3,4] => 1,2,3,4
從后往前循環(huán)每一個元素
while 循環(huán)
let len = arr.length;
while(len--) {
console.log(arr[len])
}
// arr = [1,2,3,4] => 4,3,2,1
left,right 雙指針
從前往后循環(huán)每一個元素,并且同時從后往前循環(huán)每一個元素
let left = 0,right = arr.length-1;
while(left < right) {
console.log(arr[left],arr[right])
left++;
right--;
}
// arr [1,2,3,4,5,6] => 1 6, 2 5, 3 4
單指針
使用單指針記錄為元素位置
let index=0;
for (let i=0;i<arr.length;i++) {
if (arr[i] === 0) {
index = i
}
}
使用map對象
只要有關需要記錄元素重復出現(xiàn)次數(shù)的題,都可使用map對象來處理。例如記錄每個元素出現(xiàn)的次數(shù),或者去重。
// 記錄每個元素出現(xiàn)的次數(shù)
let map = new Map();
for(let i=0;i<arr.length;i++) {
if (map.has(arr[i])) {
map.set(arr[i],map.get(arr[i])+1)
} else {
map.set(arr[i],1)
}
}
返回原地數(shù)組
不改變原數(shù)組引用地址,所以只能對原數(shù)組進行操作,不能對數(shù)組重新賦值。
- 可以使用可直接改變原數(shù)組方法 splice、push、pop、unshift、shift
- 可以調整元素位置,例如兩個元素位置互換
遞歸
當下一次計算需要使用到上一次的計算結果時,使用遞歸。將復雜問題簡單化,先寫出一次遞歸方法,然后再考慮遞歸條件。
算法本質
算法本質是將復雜問題簡單化的過程,最終是需要將復雜問題還原到簡單的for循環(huán)以及,加減法運算。不要一開始就將一個問題往復雜了想。