397. 整数替换

给定一个正整数 n ,你可以做如下操作:

如果 n 是偶数,则用 n / 2替换 n 。
如果 n 是奇数,则可以用 n + 1或n - 1替换 n 。
返回 n 变为 1 所需的 最小替换次数 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/integer-replacement
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

import java.util.Scanner;

class Solution {
    public int integerReplacement(int n) {
        int ans = 0;
        while (n != 1) {
            if (n % 2 == 0) {
                n /= 2;
                ans++;
            } else {
                ans += 2;
                if (n == 3) {
                    n = 1;
                } else {
                    if (n % 4 == 1) {
                        n /= 2;
                    } else {
                        n = n / 2 + 1;
                    }
                }
            }
        }
        return ans;
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            System.out.println(new Solution().integerReplacement(in.nextInt()));
        }
    }
}
posted @ 2022-03-24 10:14  Tianyiya  阅读(51)  评论(0)    收藏  举报