关键是要找到奇数时n+1的情况:n+1是4的倍数
例如23
n-1的情况:23->22->11->10->5->4->2->1
n-1的情况:23->24->12->6->3->2->1
class Solution(object):
def integerReplacement(self, n):
"""
:type n: int
:rtype: int
"""
def isP(n):
n=n+1
return n%4==0
count=0
while n>1:
count+=1
if n&1==0:
n=n//2
else:
if isP(n) and n!=3:
n=n+1
else:
n-=1
return count

本文深入探讨了整数替换问题的解决策略,通过算法优化,实现了对任意正整数n的有效转换,目标是最小化替换步骤。关键在于判断n+1是否为4的倍数,以决定采用加一还是减一的操作,再进行除二操作,直至n等于1。通过具体实例23的演示,清晰展示了两种不同的路径选择及其背后的逻辑。
1114

被折叠的 条评论
为什么被折叠?



