LC只出现一次的数字
2022/1/7 23:36:13
本文主要是介绍LC只出现一次的数字,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
我是纯暴力的,分两种情况,一个是aab,一个是abb;最后卡一下数组的末尾三个数的值。代码:
class Solution { public int singleNumber(int[] nums) { Arrays.sort(nums); int l = nums.length; int t = 0; int count = 0X7fffffff; int i = 1; while (i < l-1) { if (nums[t] != nums[i]){ if (nums[i] == nums[i+1]) count = nums[t]; break; } if (nums[t] == nums[i]) { t = i + 1; i = i + 2; } } if (count==0X7fffffff){ count = nums[l-1]; } return count; } }
也可以用HashSet的方法:不用排序了,直接往里加,重复会返回false,然后停止添加并删除掉原先加过的值, 最后剩下的那个值就是要求的结果。时间比暴力的要长。
class Solution { public int singleNumber(int[] nums) { HashSet<Integer> s = new HashSet<Integer> (); for (int i = 0; i < nums.length; i++){ if (!s.add(nums[i])) { s.remove(nums[i]); } } return (int)s.toArray()[0]; } }
评论里有大佬用到了位运算,是真的强!这里摘抄一下:
public int singleNumber(int nums[]) { int result = 0; for (int i = 0; i < nums.length; i++) result ^= nums[i]; return result; } 作者:数据结构和算法 链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x21ib6/?discussion=LIRNfM 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
这篇关于LC只出现一次的数字的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-25【机器学习(二)】分类和回归任务-决策树(Decision Tree,DT)算法-Sentosa_DSML社区版
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享