Leetcode--397. 整数替换
給定一個(gè)正整數(shù)?n,你可以做如下操作:
1. 如果?n?是偶數(shù),則用?n / 2替換?n。
2. 如果?n?是奇數(shù),則可以用?n + 1或n - 1替換?n。
n?變?yōu)?1 所需的最小替換次數(shù)是多少?
示例 1:
輸入:
8
輸出:
3
解釋:
8 -> 4 -> 2 -> 1
示例 2:
輸入:
7
輸出:
4
解釋:
7 -> 8 -> 4 -> 2 -> 1
或
7 -> 6 -> 3 -> 2 -> 1
思路:3比較特殊,單獨(dú)處理,偶數(shù)很簡(jiǎn)單,奇數(shù)的話加1可以除開(kāi)4的,加一,否則減一
class Solution {
? ? public int integerReplacement(int m) {
? ? ? ? int sum=0;
? ? ? ? int i;
? ? ? ? long n=m;
? ? ? ? while(n!=1)
? ? ? ? {
? ? ? ? ? ? if((n&1)==0)
? ? ? ? ? ? {
? ? ? ? ? ? ? ?n = (n>>1);
? ? ? ? ? ? ? ? sum+=1;
? ? ? ? ? ? }
? ? ? ? ? ? else if((n&1)==1&&(n&2)==0)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? n = n-1;
? ? ? ? ? ? ? ? sum+=1;
? ? ? ? ? ? }
? ? ? ? ? ? else if((n&1)==1&&(n&2)!=0)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if(n==3)
? ? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? sum+=2;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ?n = n+1;
? ? ? ? ? ? ? ? ? ? ?sum+=1;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return sum;
? ? }
}
定義為long是因?yàn)檩斎?147483647時(shí)int類型再加一就溢出
還有另一種方法,把這個(gè)值單獨(dú)判斷
class Solution {
? ? public int integerReplacement(int n) {
? ? ? ? int sum=0;
? ? ? ? int i;
? ? ? ? while(n!=1)
? ? ? ? {
? ? ? ? ? ? if(n==2147483647)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? n-=1;
? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? }
? ? ? ? ? ? if((n&1)==0)
? ? ? ? ? ? {
? ? ? ? ? ? ? ?n = (n>>1);
? ? ? ? ? ? ? ? sum+=1;
? ? ? ? ? ? }
? ? ? ? ? ? else if((n&1)==1&&(n&2)==0)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? n = n-1;
? ? ? ? ? ? ? ? sum+=1;
? ? ? ? ? ? }
? ? ? ? ? ? else if((n&1)==1&&(n&2)!=0)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if(n==3)
? ? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? sum+=2;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ?n = n+1;
? ? ? ? ? ? ? ? ? ? ?sum+=1;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return sum;
? ? }
}
總結(jié)
以上是生活随笔為你收集整理的Leetcode--397. 整数替换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 情感数据对LSTM股票预测模型的影响研究
- 下一篇: 计算机网络——CSMA/CD最小帧长相关