看板 Marginalman
直接硬幹 很慢 但可以 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