日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Leetcode--397. 整数替换

發(fā)布時(shí)間:2024/7/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Leetcode--397. 整数替换 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

給定一個(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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。