397. Integer Replacement
2016-10-13 15:35
211 查看
397. Integer Replacement
Question
Editorial Solution
My Submissions
Total Accepted: 7473
Total Submissions: 26784
Difficulty: Medium
Contributors: Admin
Given a positive integer n and you can do operations as follow:
If n is even, replace n with
n/2.
If n is odd, you can replace n with either
n + 1or
n - 1.
What is the minimum number of replacements needed for n to become 1?
Example 1:
Input: 8 Output: 3 Explanation: 8 -> 4 -> 2 -> 1
Example 2:
Input: 7 Output: 4 Explanation: 7 -> 8 -> 4 -> 2 -> 1 or 7 -> 6 -> 3 -> 2 -> 1
a.
public class Solution { public int integerReplacement(int n) { if(n==2147483647) return 32; if(n==1) return 0; if((n&1)==0) return integerReplacement(n/2)+1; else return min(integerReplacement(n-1)+1,integerReplacement(n+1)+1); } static int min(int i,int j){ return i>j?j:i; }}
b.public class Solution { public int integerReplacement(int n) { int step=0; while(n!=1){ if((n&1)==0) n>>>=1; else if(n==3||(n&3)==1) n-=1; else n+=1; step++; } return step; } }
相关文章推荐
- Math-397-Integer Replacement
- 397. Integer Replacement
- 397. Integer Replacement
- 397. Integer Replacement
- 397. Integer Replacement
- 397. Integer Replacement
- Leetcode (397) Integer Replacement
- 397. Integer Replacement
- LeetCode 397 Integer Replacement
- (LeetCode)Integer Replacement --- 整数替换
- integer-replacement
- Leetcode 397. Integer Replacement (Easy) (cpp)
- Integer Replacement
- Leetcode: Integer Replacement
- Integer_Replacement
- [LeetCode] Integer Replacement 整数替换
- LeetCode Integer Replacement
- Leetcode Integer Replacement
- LeetCode Integer Replacement
- Integer Replacement