一组数中如果只有一个数是1个,其他数是3个,找出这个数?
来源:互联网 发布:沃尔玛库存优化管理 编辑:程序博客网 时间:2024/06/05 05:03
思想:模拟3进制不进位加法运算,所有数相同位相加对3取余,得到的结果要么为1,要么为0,最终结果即为那个出现一次的数。
代码:
public int getSingle(int[] arr, int k){ int res = 0; int sum = 0; for (int i = 0; i < 32; i++) { sum = 0; for (int j = 0; j < arr.length; j++) { sum += (arr[j]>>i)&1; } if(sum % 3 == 1){ res = res | (1<<i); } } return res; }
算法时间复杂度O(3N),空间复杂度O(1)
该思想可以推广到一个数组中,只有一个数只出现了一次,其他数全是出现了K次,找出这个数。模拟K进制不进位加法。
阅读全文
0 0
- 一组数中如果只有一个数是1个,其他数是3个,找出这个数?
- 给出101个整数数,这101个数是1~100中的数,其中只有一个是出现两次的数,要求找出这个数。
- 一组数据中只有一个数字出现一次,其他数成对出现,找出这个数
- 数组中,只有一个/两个/三个数只有一个,其他都为偶数个,找出只有一个的数
- 一组整数中,除了一个数,其他数都出现了3次或以上,找出这个数
- 一组数字中只有两个数单独出现,其他数成对出现,找出这两个数
- 【c语言】给一组数,只有一个数只出现了一次,其他所有数都是成对出现的。找出这个数
- 如果1000001个数中,有一个是重复的,如何找出这个数。
- 有十个数按从大到小的顺序存放在一个数组中,输入一个数,要求找出该数是数组中的第几个元素。如果该数不在数组中,则打印出“无此数”
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,找出这两个数
- 求在一组N个的数中找出第K个最大数
- 一组数中,只有两个数只出现了奇数次,其他所有数都是成对出现的,请找出那两个数
- 有15个数存放在一个数组中,输入一个数,要求用折半法找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。以15个数用赋初值的方法在程序中给出。要找的数用scanf函数输入。
- 求一个整型数组中,只有一个数出现一次,其他的数都出现2次,求这个数?
- 给定一个数组,其中只有一个数出现一次,别的数都出现3次,找出这个数
- 序列中只有一个数出现了一次,其他均出现了两次,找出只出现过一次的这个数
- 序列中只有一个数出现了一次,其他均出现了两次,找出只出现过一次的这个数
- 数组中所有数都出现了3次,除了其中一个数,找出这个数
- xargs命令
- asList 的细节和注意事项
- Android媒体应用(三)--使用媒体会话
- linux修改mysql(root)默认密码
- java中的多线程(1)
- 一组数中如果只有一个数是1个,其他数是3个,找出这个数?
- OpenCL性能对比测试案例,合理使用clfinish()函数,充分发挥指令队列(commandqueue)特性。
- leetcode 191. Number of 1 Bits
- mysql导入数据load data infile用法(将txt文件中的数据导入表中)
- OpenStack Pike 在微服务和扩展上的狠劲
- java中Object有哪些方法
- 栈和队列(栈)
- 相关文章地址摘录
- android5.0以上webview无法播放腾讯优酷等网络视频