解題leetcode 第一個階段算法總結

從前往后循環(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)以及,加減法運算。不要一開始就將一個問題往復雜了想。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容