码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-03-07 20:53:40      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:amp   contain   解题思路   cto   ++   方法   bsp   有一个   元素   

一:解题思路

这道题目介绍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)

标签:amp   contain   解题思路   cto   ++   方法   bsp   有一个   元素   

原文地址:https://www.cnblogs.com/repinkply/p/12436741.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!