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)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 136. 只出现一次的数字

leetcode136 只出现一次的数字(Easy)

LeetCode 136. 只出现一次的数字

LeetCode第136题—只出现一次的数字—Python实现

LeetCode-136. 只出现一次的数字(java)

Leetcode-136. 只出现一次的数字