博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Single Number
阅读量:6704 次
发布时间:2019-06-25

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

除了一个出现1次,其他的数字都出现了3次,找出出现1次的数字

 

32位的二进制中,每一位要么是0,要么是1;

对于数组中的元素,每一个元素其某一位出现1的次数的和,肯定是3N或3N+1次,则次数和对3取模必定是只出现1次的元素在该位的值,即是0或1。

代码:

public class Solution {    /**    *出现的次数NUMBER,其他的数字出现次数为1,找出出现次数为1的数    */    public int NUMBER = 3;    public int singleNumber(int[] A) {        int result = 0;        for (int i = 0; i < 32; i++) {            int temp = 0;            for (int j = 0, len = A.length; j < len; j++) {                temp += 1 & (A[j] >> i);            }            result = result | ((temp % NUMBER) << i);        }        return result;    }}

 

方法二:

public int NUM = 3;    public int singleNumber(int[] nums) {        int ret = 0, mask = 0, c = 0;        for(int i = 0;i < 32;i ++){            mask = 1<
< len;j ++){ if((nums[j]&mask) != 0){ c ++; } } if(c % NUM != 0){ ret = ret | mask; } } return ret; }

 

 

转载于:https://www.cnblogs.com/xiaoxian1369/p/3632028.html

你可能感兴趣的文章
常用的几个设计心理学
查看>>
微服务为什么一定要用docker
查看>>
U盘空间缩减还原
查看>>
nagios监控window主机和LInux主机网卡流量
查看>>
Linux内核将用Nftables替代iptables
查看>>
css 字体属性详细总结
查看>>
Target runtime Apache Tomcat v6.0 is not defined.错误解决方法
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
SQL Server --堆表和索引表的区别
查看>>
程序相关规范_已整理
查看>>
我对创业和管理的一些看法
查看>>
linux chattr -- 修改linux文件属性
查看>>
我的友情链接
查看>>
Edit Control 上行号
查看>>
20110717 搞不懂的思科物流
查看>>
将图片和文字写到pdf文件中
查看>>
如何用C++实现一个LRU Cache
查看>>
前端小白,了解这3点,不怕找不到工作!
查看>>
我的友情链接
查看>>