剑指Offer—40—数组中只出现一次的数字
来源:互联网 发布:php特殊字符转义函数 编辑:程序博客网 时间:2024/05/17 22:53
数组中只出现一次的数字:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
package A40数组中只出现一次的数字;//num1,num2分别为长度为1的数组。传出参数//将num1[0],num2[0]设置为返回结果public class Solution { public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) { //一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 // 桶排序,这个数组较大的时候就没办法了 // 异或, // 假设只有一个数字的单独的,那么全部数字异或的结果就是这个数字 // (可自己举例,相同的异或结果为0,0与任何数异或都是这个数) //回到题目,现在是两个数字,那么就将两个数字分到两个数组中, //区分的办法是根据全部数字最终异或的结果,第一个为1的肯定是两个不同数的不同位置, //把那个位上为1的分为一组,为0的分为另一组,然后分别对小组异或即可求得结果 if (array == null || array.length < 2) { return ; } int num = 0; for (int i = 0; i < array.length; i++) { num = num ^ array[i]; } // 求第一个为1的索引 int index = 0; while (num > 0){ if ((num & 1) == 1){ break; } num = num >> 1; index++; } for (int i = 0; i < array.length; i++) { if (((array[i] >> index) & 1) == 1){ num1[0] ^= array[i]; }else { num2[0] ^= array[i]; } } }}
阅读全文
0 0
- 剑指offer—数组中只出现一次的数字
- 剑指offer—数组中只出现一次的数字
- 剑指offer — 数组中只出现一次的数字
- 剑指offer-40 数组中只出现一次的数字
- 剑指offer 40-数组中只出现一次的数字
- 剑指offer 40 数组中只出现一次的数字
- 《剑指offer》:[40]数组中只出现一次的数字
- 剑指Offer 40 数组中只出现一次的数字
- 剑指offer——面试题40:数组中只出现一次的数字
- 剑指Offer——(40)数组中只出现一次的数字
- 剑指Offer—40—数组中只出现一次的数字
- 剑指offer 面试题40—数组中两个只出现一次的数字
- 剑指offer--数组中只出现一次的数字
- 剑指Offer之 - 数组中只出现一次的数字
- [剑指Offer]40.数组中只出现一次的数字
- 剑指offer 数组中只出现一次的数字
- 《剑指offer》数组中只出现一次的数字
- 【剑指offer】之数组中只出现一次的数字
- 笔试笔记(七)
- ubuntu安装必要的软件
- settings.db应用 笔记:
- 使用wireshark抓取视频流中的H264协议,并分析
- HDU6146 Pokémon GO (2017百度之星程序设计大赛
- 剑指Offer—40—数组中只出现一次的数字
- Docker:Swarm + Stack 一站式部署容器集群
- linux 下使用 tc 模拟网络延迟和丢包
- sql总结
- Java注解详解,自定义注解,利用反射解析注解
- 新出炉的车牌识别验证模块
- 细谈清除浮动的几种方法
- hadoop6-Hbase入门
- 数据库常用操作