1class Solution:2def bestRotation(self, nums: List[int]) -> int:3diff = [i - nums[i] for i in range(len(nums))]45target = 06qualified = []7for d in diff:8if d >= target:9heappush(qualified, d)10smallest_rotate = 011highest_score = len(qualified)1213for rotate in range(1, len(nums)):14target += 115while qualified and qualified[0] < target:16heappop(qualified)17modified = diff[rotate - 1] + len(diff)18heappush(qualified, modified)19score = len(qualified)20if score > highest_score:21smallest_rotate = rotate22highest_score = score2324return smallest_rotate