zoukankan      html  css  js  c++  java
  • 坏了的计算器

    在显示着数字的坏计算器上,我们可以执行以下两种操作:

    • 双倍(Double):将显示屏上的数字乘 2;
    • 递减(Decrement):将显示屏上的数字减 1 。

    最初,计算器显示数字 X

    返回显示数字 Y 所需的最小操作数。

    示例 1:

    输入:X = 2, Y = 3
    输出:2
    解释:先进行双倍运算,然后再进行递减运算 {2 -> 4 -> 3}.
    

    示例 2:

    输入:X = 5, Y = 8
    输出:2
    解释:先递减,再双倍 {5 -> 4 -> 8}.
    

    示例 3:

    输入:X = 3, Y = 10
    输出:3
    解释:先双倍,然后递减,再双倍 {3 -> 6 -> 5 -> 10}.
    

    示例 4:

    输入:X = 1024, Y = 1
    输出:1023
    解释:执行递减运算 1023 次



    解题思路:首先看到这个题目感觉不难,然后分情况去解题,只有 x2和 -1的操作,
    1.X>=Y 只有一直递减,所以结果为 X-Y,
    2.X<Y 我首先想到的是用X/Y然后和2的n次去比较,然后使用了下,会出现最小公约数的问题,然后就没想到循环去解决。
    因为我只判断了第一次是否为奇数,只有第一次加一,所以有问题,然后看了下题解,才想到应该放到循环里面。

    最后题解
    class Solution {
        public int brokenCalc(int X, int Y) {
              if(X >= Y){
                    return X-Y;
                }
                int num = 0;
                while(X < Y) {
                    if(Y % 2 == 1) {
                        Y++;
                    } else {
                        Y /= 2;
                    }
                    num++;
                }
                num += X - Y;
                return num;
        }
    }
    

      我的第一次

    public static int brokenCalc(int X, int Y) {
                if(X >= Y){
                    return X-Y;
                }
                int p = 0;
                int m = Y %2;
                if(m  == 1){
                    Y =Y +1;
                    p++;
                }
                int t = Y / X;
                int q = 0;
                while(true){
    
                    if( t >= (2 * q)  && t <= 2 *(q + 1)){
                        return q +1 + p + (t- 2 *q);
                    }
                    q++;
                }
    
            }
    

      

  • 相关阅读:
    HDU 2104 hide handkerchief
    HDU 1062 Text Reverse 字符串反转
    HDU 1049
    HDU 1096 A+B for Input-Output Practice (VIII)
    POJ 1017
    C/C++一些难为人知的小细节
    小刘同学的第十二篇博文
    小刘同学的第十一篇博文
    小刘同学的第十篇博文
    小刘同学的第九篇日记
  • 原文地址:https://www.cnblogs.com/sphh/p/10802690.html
Copyright © 2011-2022 走看看