p6 只出现一次的数字 (leetcode136)
Posted repinkply
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了p6 只出现一次的数字 (leetcode136)相关的知识,希望对你有一定的参考价值。
一:解题思路
这道题目介绍2种方法。解法一:利用位运算来做,数组中所有的数字都是成对出现的,只有一个是单独出现的,那么我们可以利用异或的性质来做。解法二:利用集合set的特性,把所有数字添加到集合中(每个数字只出现一次),然后将集合中的数字乘以2减去原来数组元素和。
二:完整代码示例 (C++版和Java版)
C++版:
class Solution { public: int singleNumber(vector<int>& nums) { int result = 0; for (int i = 0; i < nums.size(); i++) { result ^= nums[i]; } return result; } };
class Solution { public: int singleNumber(vector<int>& nums) { set<int> s; int num1 = 0; int num2 = 0; for (int i = 0; i < nums.size(); i++) { num1 += nums[i]; if (s.count(nums[i]) == 0) { s.insert(nums[i]); num2 += nums[i]; } } return 2 * num2 - num1; } };
Java版:
class Solution { public int singleNumber(int[] nums) { int result=0; for(int num:nums) { result^=num; } return result; } }
class Solution { public int singleNumber(int[] nums) { HashSet<Integer> hashSet=new HashSet<>(); int num1=0; int num2=0; for(int num:nums) { num1+=num; if(!hashSet.contains(num)) { hashSet.add(num); num2+=num; } } return 2*num2-num1; } }
以上是关于p6 只出现一次的数字 (leetcode136)的主要内容,如果未能解决你的问题,请参考以下文章