LeetCode Integer Replacement
2016-10-26 08:39
302 查看
题意:给出一个正数n,如果n为偶数则n = n /2,如果n为奇数,则n=n + 1或者n=n-1,求其变为1所需要的最少步数。
思路:刚开始用记忆化的dp,当数值比较大时,提示栈溢出。在判断是n=n+1或者n=n-1时总是选择结果位为1最小的操作
代码如下:
public class Solution
{
public int integerReplacement(int n)
{
int ans = 0;
while (n != 1)
{
if ((n & 1) == 0) n >>>= 1;
else
{
if (n == 3 || Integer.bitCount(n + 1) > Integer.bitCount(n - 1))
{
--n;
}
else ++n;
}
ans++;
}
return ans;
}
}
思路:刚开始用记忆化的dp,当数值比较大时,提示栈溢出。在判断是n=n+1或者n=n-1时总是选择结果位为1最小的操作
代码如下:
public class Solution
{
public int integerReplacement(int n)
{
int ans = 0;
while (n != 1)
{
if ((n & 1) == 0) n >>>= 1;
else
{
if (n == 3 || Integer.bitCount(n + 1) > Integer.bitCount(n - 1))
{
--n;
}
else ++n;
}
ans++;
}
return ans;
}
}
相关文章推荐
- Leetcode: Integer Replacement
- Leetcode Integer Replacement
- [LeetCode] Integer Replacement 整数替换
- LeetCode 397 Integer Replacement
- Leetcode (397) Integer Replacement
- LeetCode Integer Replacement
- (LeetCode)Integer Replacement --- 整数替换
- Leetcode 397. Integer Replacement (Easy) (cpp)
- LeetCode-Integer Replacement
- leetcode:8. String to Integer (atoi)
- leetcode 13: Roman to Integer
- LeetCode 13 Roman to Integer (easy)——python
- #8 LeetCode——String to Integer (atoi)
- LeetCode8-StringtoInteger
- [LeetCode] 13.Roman to Integer
- LeetCode 12. Integer to Roman
- LeetCode (8) String to Integer (atoi) C语言程序
- (atoi)Leetcode第八题_String to Integer (atoi)
- leetcode-13-Roman to Integer
- [LeetCode][13]Roman to Integer解析 罗马字符转int类型关于栈的常数实现-Java实现