劍指Offer(數據結構與算法面試題精講)C++版——day2
- 題目一:只出現一次的數據
- 題目二:單詞長度的最大乘積
- 題目三:排序數組中的兩個數字之和
題目一:只出現一次的數據
????一種很簡單的思路是,使用數組存儲出現過的元素,比如如果0出現過,那么arr[0]=1
,但是有個問題,題目中沒有說明是正整數,如果給每個數加上一個初始值強制變為正數,那么也不太行,因為可能超過了整數范圍。如果是使用JavaScript
,那么一個很簡單的思路就是使用Map
映射:
(function test() {console.log("javascript程序運行測試~");const arr = [-1, 2, 2, 3, -1];let tmpMap = new Map();arr.map(item => {if (!tmpMap.has(item)) {tmpMap.set(item, 1);} else {tmpMap.set(item, tmpMap.get(item) + 1);}});for (const key of tmpMap.keys()) {console.log(`數字${key},出現次數${tmpMap.get(key)}`);}
})();
????這類統計次數的題型我印象特別深刻,因為之前有一次參加過一家網頁游戲的前端面試,當時跟