zoukankan      html  css  js  c++  java
  • leetcode-476. Number Complement

    476. Number Complement

    Example 1:

    Input: 5
    Output: 2
    Explanation: The binary representation of 5 is 101 (no leading zero bits), and its complement is 010. So you need to output 2.
    

    Example 2:

    Input: 1
    Output: 0
    Explanation: The binary representation of 1 is 1 (no leading zero bits), and its complement is 0. So you need to output 0.

    求一个数的补码。

    public class Solution {
        private int getPow(int x,int y){
            int a=1;
            for(int i=0;i<y;i++){
                a*=x;
            }
            return a;
        }
        public int findComplement(int num) {
            int sum=0;
            if(num==0){
                return 1;
            }
            if(num>0){
                int i=0;
                while(num!=0){
                    if(num%2==1){
                        i++;
                    }else{
                        sum=sum+getPow(2,i);
                        i++;
                    }
                    num/=2;
                }
            }
            
            return sum;
        }
    }
    

      另一种解法:

    举个例子:
    100110, 它的补码是 011001, 和是 111111. 所以我们先求和num的二进制长度相同全为一的数,然后做减法

    public int findComplement(int num) 
        {
            int i = 0;
            int j = 0;
            
            while (i < num)
            {
                i += Math.pow(2, j);
                j++;
            }
            
            return i - num;
        }
    

      

  • 相关阅读:
    面向对象
    Vue + webpack 项目实践
    配置webstorm监听less时时转换
    delegate事件代理
    JS for 循环
    JS while 循环
    JS switch 分支语句
    JS if 判断
    JS 运算符
    JS typeof() parseInt() parseFloat()
  • 原文地址:https://www.cnblogs.com/lcbg/p/6600071.html
Copyright © 2011-2022 走看看