มี start < end ทำได้ 2 อย่าง: +1 หรือ ×2 หาจำนวนขั้นตอนน้อยสุดจาก start ถึง end
ตัวอย่าง: start=5, end=11 → 2 (5×2=10, +1=11)
อัลกอริธึมย้อนกลับ (Greedy)
- จาก end ย้อนกลับ: ถ้าคี่ → -1 แล้ว /2 (2 ขั้น), ถ้าคู่ → /2 (1 ขั้น)
- ทำจนกว่า end/2 < start แล้วบวก (end - start) เข้าไป
การนำไปใช้
class Solution:
def solve(self, start, end):
ct = 0
while end / 2 >= start:
if end % 2 == 1:
end -= 1
end //= 2
ct += 2
else:
end //= 2
ct += 1
ct += (end - start)
return ct
ob = Solution()
print(ob.solve(5, 11)) # 2