当前位置:首页 > 编程笔记 > 正文
已解决

【Leetcode】【简单】136.只出现一次的数字

来自网友在路上 143843提问 提问时间:2023-10-19 21:39:45阅读次数: 43

最佳答案 问答题库438位专家为你答疑解惑

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=N7T8https://leetcode.cn/problems/single-number/description/

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

你必须设计并实现线性时间复杂度(O(n))的算法来解决此问题,且该算法只使用常量额外空间(O(1))

示例 1 :

输入:nums = [2,2,1]
输出:1

示例 2 :

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

示例 3 :

输入:nums = [1]
输出:1

自己的思路

遍历目标数组nums,使用Map存储<key, value>,其中key是nums的元素,value是元素出现的次数。

元素出现分两种情况讨论

1、元素第一次出现:初始化value为1

2、元素不是第一次出现,获取value的值,然后+1

代码实现

class Solution {public int singleNumber(int[] nums) {int len = nums.length;Map<Integer, Integer> hashMap = new HashMap<>();for (int i = 0; i < len; i++) {if (hashMap.containsKey(nums[i])) {hashMap.put(nums[i], hashMap.get(nums[i]) + 1);} else {hashMap.put(nums[i], 1);}}for (Map.Entry<Integer, Integer> entry : hashMap.entrySet()) {if (entry.getValue() == 1) {return entry.getKey();}}return -1;}
}

 力扣官方题解(待更新)

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"【Leetcode】【简单】136.只出现一次的数字":http://eshow365.cn/6-19839-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!