您的位置:首页 > 其它

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 +
1
 or 
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;    
        
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: