作者DJYOMIYAHINA (通通打死)
看板Marginalman
標題Re: [閒聊] 每日leetcode
時間Wed Nov 6 22:58:29 2024
直接硬幹 很慢 但可以
def canSortArray(self, nums: List[int]) -> bool:
n = len(nums)
for i in range(n):
for j in range(n-i-1):
if nums[j]>nums[j+1]:
cnt_l, cnt_r = 0, 0
l, r = nums[j], nums[j+1]
while l>0:
cnt_l += (l&1)
l = l >> 1
while r>0:
cnt_r += (r&1)
r = r >> 1
if cnt_l == cnt_r:
nums[j], nums[j+1] = nums[j+1], nums[j]
else:
return False
return True
看答案 比較聰明的方法 自己寫看看
def canSortArray(self, nums: List[int]) -> bool:
def cnt(num):
cnt = 0
while num>0:
cnt += (num&1)
num >>= 1
return cnt
cur_max = nums[0]
pre_max = 0
pre_cnt = cnt(nums[0])
for num in nums[1:]:
cur_cnt = cnt(num)
if cur_cnt==pre_cnt:
cur_max = max(cur_max, num)
else:
pre_max = cur_max
cur_max = num
pre_cnt = cur_cnt
if num<pre_max:
return False
return True
昨天的
其實想了蠻久的==
腦袋卡卡的
def minChanges(self, s: str) -> int:
ans = 0
for i in range(0, len(s), 2):
if s[i]!=s[i+1]:
ans += 1
return ans
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.229.37.69 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1730905111.A.C3E.html