leetcode+最少步數到達1,遞迴
阿新 • • 發佈:2019-01-27
點選開啟連結
//分奇偶函式遞迴 class Solution { public: int integerReplacement(int n) { if(n==1) return 0; if(n==INT_MAX) return 32; int r=0, rr=0; int k = n&1; //取整數的最後一位,判斷奇偶性。 if(!k){ //偶函式 r = integerReplacement(n>>1)+1;//遞迴,左移一位,+1 } else{//奇數 r = integerReplacement(n>>1)+2;//減1。末尾直接忽略 rr = integerReplacement((n+1)>>1)+2; //考慮 n=INT_MAX。 所以前面提出INT_MAX,防止+1溢位 r = min(r, rr); } return r; } };