想了一下
總之最多好像就61次? (雖然我跑60次也過了)
for i in range(1,62)
先算num1-i*num2的部分
然後看這個num1-i*num2有幾個1bit
若現在的i>這個bit數 應該都是可以減成0的 (這個只是感覺 但應該就是ㄌ
直覺想到一個case是當i太多 但其實num1-i*num2沒這麼多1可以減
就加一個case擋掉
def makeTheIntegerZero(self, num1: int, num2: int) -> int:
cur = num1
for i in range(60):
cur -= num2
if cur>0:
if cur.bit_count()<=(i+1) and cur>=(i+1):
return i+1
return -1