剑指offer-40-数组中只出现一次的数字

数组中只出现一次的数字_牛客网

https://www.nowcoder.com/practice/e02fdb54d7524710a7d664d082bb7811?tpId=13&tqId=11193&tPage=2&rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。

简单方法

可以先用最简单的HashMap的方法来做,这样主要是为了练习Map的用法。

import java.util.HashMap;
public class Solution {
    public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
        //哈希算法
        HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
        for(int i=0; i < array.length; i++){
            if(map.containsKey(array[i]))
                map.put(array[i],2);
            else
                map.put(array[i],1);
        }
        int count = 0;
        for(int i=0; i < array.length; i++){
            if(map.get(array[i]) == 1){
                if(count == 0){
                    num1[0] =  array[i];
                    count++;
           

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

小白刷剑指offer 文章被收录于专栏

跟着小白一起刷剑指offer,通过讨论加深印象吧~ 没有人不学习就能够掌握知识,知识就是需要学习的~

全部评论
找到那个index可以这么做:int pivot =xor1 & (-xor1); 同样是找到最低位的1
3
送花
回复
分享
发布于 2019-12-04 16:59
答主你好,一直左移位应该是找到最低位的1吧,比如xor1=7时对应的index=1,但是xor1=6时对应的index=2;而不是您说的4
1
送花
回复
分享
发布于 2019-10-11 10:58
秋招专场
校招火热招聘中
官网直投
很有意思的方法啊
点赞
送花
回复
分享
发布于 2019-10-10 19:59
秒啊
点赞
送花
回复
分享
发布于 2020-03-17 16:06
楼主太强了
点赞
送花
回复
分享
发布于 2020-03-30 18:33
这个方法太巧秒了
点赞
送花
回复
分享
发布于 2020-03-31 23:24
0异或其他数字,还是其他数字
点赞
送花
回复
分享
发布于 2020-04-06 00:56
你好,请问一下为什么第二种方法中if((index & array[i]) == 0)判断语句,为什么改为==1就通不过?按理来说思路还是一样的
点赞
送花
回复
分享
发布于 2020-05-19 22:18
这方法太强了。。
点赞
送花
回复
分享
发布于 2020-08-13 17:23
您好,为什么将 if((index & array[i]) == 0)改成 if((index & array[i]) == 1)运行测试输出了一个很奇怪的答案,感觉应该跟这个是1或者0没有关系呀
点赞
送花
回复
分享
发布于 2020-09-09 12:26
妙啊
点赞
送花
回复
分享
发布于 2020-11-12 11:40
好,果然我没有智商
点赞
送花
回复
分享
发布于 2020-12-22 20:23

相关推荐

97 5 评论
分享
牛客网
牛客企业服务