博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode191-位1的个数(题目有问题)
阅读量:6772 次
发布时间:2019-06-26

本文共 1513 字,大约阅读时间需要 5 分钟。

和1做与运算,结果为1的那一位就是1,不断右移

第一个版本

public static int hammingWeight(int n) {        int count = 0;        while(n!=0){            if((n&1)==1)                count++;            n=n>>1;        }        return count;    }

 

超时了?

 

 

 自己输几个用例

 

 

我不懂!题目函数的参数是int,为什么会有这种用例,这不是题目的错误吗。在编辑器里面根本都过不了

 

 

 

我把里面的n转化成long也不行

 

 

我把函数参数改成long也不行???

 

为什么还会显示Integer?

明明这个时候还是long

 

 我懂了,应该是java默认输入的参数都是int类型的

 

 

 

服了,这是什么BUG题目,真强

 

 假如题目是long,那么只要移位即可。使用int毫无意思,java里面没有unsigned int。

后来想到int的最大值是2147483647,那么2147483649是2147483647+1,用int肯定传不进来的,但是题目模范就是int。

没法

2147483647是整数里面最大的,就是0 1111111111111111111111111111111111111111111111111111111111(乱打的1,没数多少)

那么2147483648就是 0 11111111111111111111111111111 + 1 = 1 000000000000000000000000

因为最前面的1位是1,所以右移的话,左边是补1的,不会等0,所以导致了前面的超时!

太恶心了。

这个时候,1 000000000000000000000 是 -0 就是 0

这个不是补码,而是乱来

1 00000000000000000000001 呢 2147483649 要怎么算呢?

或许能用2147483649 - 2147483647 - 1 ?

无论怎么算,都没法找到好的方法。

 

但是有一种方法可以完美解决这种问题。

不是用原数据来移位。

就是改变用来与运算的值。1,10,100,1000,10000 .。。。。。。。。。。。 这样就能不断的从右往左去比较了!

一开始是负数的情况使用的,后来发现无论是整数还是负数都管用!

 

0 11111111111111111111111111111  比如判断第五位 使用 10000 ,只要与运算之后,结果是10000就行了,只关注第五位,其他的不管,就是和

0 0000000000000000000010000 运算

 

public int hammingWeight(int n) {        int i = 0;            int test = 1;            int count = 0;            while(i<32){                if((n&test)==test)                    count++;                test=test<<1;                i++;            }            return count;    }

 

 

说到底,还是题目的int太恶心了,明明是int是无法通过的,为了不让使用long,就用int来误导别人。

转载于:https://www.cnblogs.com/weizhibin1996/p/9457555.html

你可能感兴趣的文章
基于 react, redux 最佳实践构建的 2048
查看>>
学习笔记: Swift 关于结构体与类的探索
查看>>
JS的原型和继承
查看>>
【避坑】初次接项目的血与泪,扎坑了老铁(二)
查看>>
莫空面试记2
查看>>
Redux源码了解一下
查看>>
Logback配置解析
查看>>
读书笔记-Android中的广播机制
查看>>
关于想要的变量提升
查看>>
记录一些常用项
查看>>
Categroy方法覆盖原理
查看>>
2.3 Android 换肤原理
查看>>
使用koa处理前端发送的http请求
查看>>
iframe弹窗 - 列表渲染第一次可以,再次点击不显示 问题
查看>>
HDFS应用场景、原理、基本架构
查看>>
Java并发编程(5):volatile变量修饰符-意料之外的问题(含代码)
查看>>
webpack中的css引入文件需要用~@的形式,为什么?
查看>>
[译] React fiber如何以及为何使用列表来遍历组件树
查看>>
Dubbo 源码分析 - 集群容错之 LoadBalance
查看>>
Android AOP之字节码插桩
查看>>