0710,0711 leetcode刷題小結

2021-09-25 04:49:07 字數 1140 閱讀 4727

暑期目標:刷100題

其中:簡單題記0.5題;

中等題記0.8題;

困難題記1.5題;

題目數量:簡單題*2 , 進度 1/100

[231] 2的冪, 判斷乙個數是否為2的冪

我的解法:

使用位運算

把輸入與1求「&」,並加在count中(即,若為1 ,則+1, 若為0,則不變)

把輸入右移一位:>>,繼續重複上一步,直至該數為0

-1特殊處理

若count<2(即對應二進位制數的補碼僅有一位是1), 則是2的冪,

否則不是

最快的大佬的解法:

直接對n與n-1求與(&),若為0則是2的冪

[202] 快樂數,對於乙個正整數,每一次將該數替換為它每個位置上的數字的平方和,然後重複這個過程直到這個數變為 1,也可能是無限迴圈但始終變不到1。如果可以變為 1,那麼這個數就是快樂數。

我的解法:

按照題目要求來求

停止條件有兩個:

最終得到1 或 最終得到的數之前出現過

大佬的解法:

大差不差,但是分類討論得更優

題目數量:中等題*2 , 進度 2.6/100

公司oj的no.80 一系列字串轉為6位數字,具體方法是求各個字元的ascii碼,6個一輪,下一輪與前一輪對應位置相加,然後把這六個數字各位相加,得到6個個位數即可;

學到的乙個操作,用於求多位數n的各位數之和:

s = sum(map(int, str(n)))
基本就是按照題目要求的迴圈即可

在判斷是否為各位數時用了一次遞迴

最終結果是最快的

[794] 有效的井字遊戲,題目略複雜,就不詳述了,大概是給定幾條規則,給定乙個list作為棋盤,判斷該期盼是否符合規則。

我的解法很蠢,基本就是找規則,甚至還用了乙個類似窮舉的操作

大佬的解法巧妙些,對規則總結得很到位,所以寫出來很簡單

還是得多思考啊~

leetcod刷題 移動零

週末了,睡了好久的懶覺了,起來去實驗室寫專案之前再刷一道題提提神就好了。給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0,1,0,3,12 輸出 1,3,12,0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。這道題也...

LeetCod 27 移除元素

給定乙個陣列 nums 和乙個值 val,你需要原地移除所有數值等於 val 的元素,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。元素的順序可以改變。你不需要考慮陣列中超出新長度後面的元素。示例 1 給定 nums 3,2,2,3 ...

LeetCod 200 島嶼數量

給定乙個由 1 陸地 和 0 水 組成的的二維網格,計算島嶼的數量。乙個島被水包圍,並且它是通過水平方向或垂直方向上相鄰的陸地連線而成的。你可以假設網格的四個邊均被水包圍。示例 1 輸入 11110 11010 11000 00000 輸出 1 示例 2 輸入 11000 11000 00100 0...