前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode84|只出现一次的数字

LeetCode84|只出现一次的数字

作者头像
码农王同学
发布2020-10-14 10:37:39
4100
发布2020-10-14 10:37:39
举报
文章被收录于专栏:后端Coder后端Coder

1,问题简述

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

说明:

你的算法应该具有线性时间复杂度。你可以不使用额外空间来实现吗?

2,示例

代码语言:javascript
复制
示例 1:

输入: [2,2,1]
输出: 1
示例 2:

输入: [4,1,2,1,2]
输出: 4

3,题解思路

这题这里给出了两种解法,一个是使用键值对集合HashMap集合,一个是使用位运算来解决。

4,题解程序

代码语言:javascript
复制

import java.util.HashMap;

public class SingleNumberTest2 {
    public static void main(String[] args) {
        int[] nums = {2, 2, 1};
        int singleNumber = singleNumber(nums);
        System.out.println("singleNumber = " + singleNumber);
    }

    public static int singleNumber(int[] nums) {
        if (nums == null || nums.length == 0) {
            return -1;
        }
        int ans = nums[0];
        for (int i = 1; i < nums.length; i++) {
            ans = ans ^ nums[i];

        }
        return ans;
    }

    public static int singleNumber2(int[] nums) {
        if (nums == null || nums.length == 0) {
            return -1;
        }
        HashMap<Integer, Integer> hashMap = new HashMap<>(nums.length);
        for (int num : nums
        ) {
            hashMap.put(num, hashMap.getOrDefault(num, 0) + 1);
        }
        return hashMap.entrySet().stream().filter(x -> x.getValue() == 1).findFirst().get().getKey();
    }
}

5,题解程序图片版

6,总结

其实我也不知道,对于看这篇文章的读者来说怎么样,因为如果我输出文章的话一般都是在有大块的时间才来输出的,所以一坐就会很长时间,一般我输出的内容都是自己沉淀好的,因为总觉得如果不经过内心沉淀和自己思考,内容总不是自己的,像极了没有灵魂的身躯而言,给人的感觉,这写的什么玩意,copy有意思吗,不过我写文章或者输出文章的目的第一要点不是为了别人,而是为了自己,因为我觉得我们还不是一个媒介传播者,技术的传播,要是这样我觉得一开始的话,我就会给你找各种各样的技术文章给你了,但是,你发现我文章基本上都是原创,这就是我坚持自己写文章的初衷吧,不过也会看到一些具有思考意义的文章分享给你们的,有需要的话,欢迎在留言区进行讨论,需要的内容,会给到你们的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农王同学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档