[筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 6

重念一次早該補起來的「資料結構與演算法」。這篇筆記延續 Sliding Window 的練習,來解 Unique Letter SubString 和 Largest Product。

notes-theideaofalgorithm-javascript-1


課程相關資訊

[連結]:https://hiskio.com/courses/572/lectures/29790

本篇範圍:Chapter 4

請注意:本系列文章為個人對應課程的消化吸收後,所整理出來的內容。換言之,並不一定會包含全部的課程內容,也有可能會添加其他資源來說明。


內容

Unique Letter SubString

Write a function called uniqueLetterString, which accepts a string and returns the length of the longest substring with all distinct characters.

Ex. uniqueLetterString(‘thisishowwedoit’). // 6

解法

一樣使用雙指針,都由左側開始。
當右側一個個加入記數 (counter) ,並計算雙指針的差值。
每當記數重複時,將左側的指針往右移,並將記數內的值 – 1。雖說 start 和 end 此時所指的內容字是一樣的,但需要寫 start 以便閱讀
若最後結果仍是 -Infinity,那就表示沒有 unique 的 subString


Largest Product

The four adjacent digits in the 1000-digit number that have the greatest product are 9*9*8*9 = 5832.
Find the n adjacent digits in the 1000-digit number that have the greatest product. What is the value of this product?

解法

一樣是雙指針,一根為 start,另一個為 size 的大小當做起始值。
這是一個固定式的窗格題目,每次就一個個向右滑動把積給算出來


程式碼

https://github.com/andy922200/hiskio-the-idea-of-algorithm/commit/9cced5f94f77ba9c904e01d1527a6fcf8d4693b8


系列文章

  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 9
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 8
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 7
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 5
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 4
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 3
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 2
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 15
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 14
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 13
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 12
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 11
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 10
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 1
  • 按讚加入粉絲團

    延伸閱讀