1.Englisg learning one hour
2.算法
1.找最多數 大致意思:一個數組總會出現一個最多數,最多數判斷依據 大于數組的1/2(js)
思路a:先設定一個空的object,開始遍歷數組,在遍歷數組時以數組值為key,第一次遇見key時初始化value=1,以后每次遇見+=1;此時在+=1后判斷value>= length/2;
代碼:
打敗了78%的人!!!!
b:投票法:思路設定兩個指針indexA,pointB,初始話使indexA指向nums【0】,設定一個value值為當前A出現的次數,B指針依次遍歷數組,當倆個指針的數不一樣的時候value-1,如果value<=0,則將A指針指向當前B的位置。
這個方法我感覺不如第一個方法:理由如下無論什么情況都需要遍歷一遍完整的數組時間上可能會稍遜于第一個方法,但是這個方法沒有占用第一個方法需要的object空間,只用了額外的兩個空間,實際操作上遍歷的指針可以不需要,只額外用了一個指針空間
代碼:
結果:
這個測試數據邊界測試哈哈哈!!!
第二個題:只出現一次數字,在一個數組中其余數字都出現兩次,只有一個數組出現一次,找到并返回這個數組
1.異或=》賊好用
2.構建一個object,檢測到數字第一次出現初始化并設置value=1,第二次出現則移除object中的這個key,最后數組中只剩下一個值return Object.keys(object),完美,
只需要遍歷一遍且占用空間為n/2 但是這個解法在leetcode只戰勝了20%的人,嗚嗚嗚!
代碼不寫了,太晚了
第三道題:三數之和(經典)
1.目前想到的解法 放到明天吧
總結:今天沒看vue,目前正在搭建一個個人網站,等搭好了轉移陣地!!!
浙公網安備 33010602011771號