LeetCode——260. 只出现一次的数字 III(Java)
2021/10/30 17:12:49
本文主要是介绍LeetCode——260. 只出现一次的数字 III(Java),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题目描述
题干: 给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。 进阶:你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现? 示例 1: 输入:nums = [1,2,1,3,2,5] 输出:[3,5] 解释:[5, 3] 也是有效的答案。 示例 2: 输入:nums = [-1,0] 输出:[-1,0] 示例 3: 输入:nums = [0]
题解分析
返回只出现过一次的两个元素,而且还提示你能不能线性复杂度,所以第一个思路就是哈希表 当然这里题目设计的就很巧妙,为什么这里是两个唯一的数字,并且其他的数都是成对出现 如果熟悉位运算的同学就应该知道,一个数和自己的异或为0,所以该数组相互异或可想而知 就是两个唯一出现过一次的异或结果,根据这个规律大家可以自己尝试尝试怎么解决
正确代码
public int[] singleNumber(int[] nums) { HashMap<Integer, Integer> map = new HashMap<>(); for (int num : nums) { map.put(num, map.getOrDefault(num, 0) + 1); } int[] ans = new int[2]; int index = 0; for (Map.Entry<Integer, Integer> entry : map.entrySet()) { if (entry.getValue() == 1) { ans[index++] = entry.getKey(); } } return ans; }
总结
题目设计的果然很精妙,这里还拓展了一种Map的遍历方式:Entry,以后可以更优雅了 如果文章存在问题或者有更好的题解,欢迎在评论区斧正和评论,各自努力,最高处见
这篇关于LeetCode——260. 只出现一次的数字 III(Java)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?
- 2024-05-30java excel上传--poi
- 2024-05-30安装笔记本应用商店的pycharm,再安排pandas等模块,说是没有打包工具?
- 2024-05-29java11新特性