首先是 2423. Remove Letter To Equalize Frequency(easy)
https://leetcode.com/problems/remove-letter-to-equalize-frequency/
給一個字串s,挑選一個字元刪除,剩下的字母個數必須相同。
老實說這題,我一直在思考有沒有更好的辦法。
最後還是靠暴力法
在寫Contest寫這題寫太久,導致後面寫的東西品質不是很好,果燃道行還不夠。
class Solution:
def equalFrequency(self, word: str) -> bool:
#得先知道個數
wordC = Counter(word)
#每個東西的個數都知道了
print(wordC)
temp = wordC.copy()
for i in wordC:
temp[i] -= 1
if temp[i] == 0:
del temp[i]
if len(set(temp.values())) == 1:
return 1
if i not in temp:
temp[i] = 0
temp[i] += 1
return 0
接著是 2424. Longest Uploaded Prefix (medium)
https://leetcode.com/problems/longest-uploaded-prefix/
寫出所有function應該有的寫法,老實說寫過一次,遇到類似的問題應該都能夠回答出來。
這題解釋頗麻煩,就用google翻譯
你會得到一個n影片流,每個影片都由一個不同的數字1表示n,你需要“上傳”到服務器。您需要實現一個數據結構,在上傳過程中的各個點計算最長上傳前綴的長度。
如果到(含)範圍內的所有視頻都已上傳到服務器,我們認為i是上傳前綴。最長上傳前綴是滿足此定義的最大值。
LUPrefix
LUPrefix(int n)為n影片流初始化對象。
void upload(int video)上傳video到服務器。
int longest()返回上面定義的最長上傳前綴的長度。
class LUPrefix:
#我不想說話...........
#被卡過一次就知道的題目
save = []
ans = 0
def __init__(self, n: int):
self.save = [0]*(n+1)
def upload(self, video: int) -> None:
self.save[video-1] = 1
while self.save[self.ans] != 0:
self.ans += 1
def longest(self) -> int:
return self.ans
# Your LUPrefix object will be instantiated and called as such:
# obj = LUPrefix(n)
# obj.upload(video)
# param_2 = obj.longest()
再來是 2425. Bitwise XOR of All Pairings (medium)
給予兩個整數串列num1、num2,把num1的每個數字跟num2的每個數字用xor計算一遍,得到一串列resultList。
再把resultList的每個數字用xor計算一遍,結束。
這題給懂得xor的人來算根本秒殺題,簡單來說因為要把所有的數字都xor,也就是num1的數字會被xor num2長度的次數,num2的數字會被xor num1長度的次數,最後再xor一起即可。
class Solution:
def xorAllNums(self, nums1: List[int], nums2: List[int]) -> int:
n1L = len(nums1)
n2L = len(nums2)
ans = 0
for i in nums1:
ans ^= i if n2L % 2 else 0
for i in nums2:
ans ^= i if n1L % 2 else 0
return ans
(第四題沒寫出來QQ)
以上為本次的練習,感謝觀看