ปัญหา
อาร์เรย์ nums ความยาวคู่ จัดเรียงใหม่ได้ไหม ที่ nums[2*i+1] = 2*nums[2*i] สำหรับทุก i
ตัวอย่าง
nums=[4,-2,2,-4] → True (จัดเป็น [-2,-4,2,4] หรือ [2,4,-2,-4])
ขั้นตอนการแก้ปัญหา
cnt := Counter(nums)- วน
xในsorted(cnt, key=abs):- ถ้า
cnt[x] > cnt[2*x]: คืนFalse cnt[2*x] -= cnt[x]
- ถ้า
- คืน
True
การนำไปใช้งาน (Python)
from collections import Counter
def solve(nums):
cnt = Counter(nums)
for x in sorted(cnt, key=abs):
if cnt[x] > cnt[2 * x]:
return False
cnt[2 * x] -= cnt[x]
return True
nums = [4,-2,2,-4]
print(solve(nums))
อินพุต
[6,0,8,2,1,5]
เอาต์พุต
True