Leetcode: SingleNumber I & II & III 136/137/260

Posted 梦樱羽

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode: SingleNumber I & II & III 136/137/260相关的知识,希望对你有一定的参考价值。

SingleNumber I:

题目链接:https://leetcode-cn.com/problems/single-number/

题意:

  给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

  说明:

  你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

  示例 1:

  输入: [2,2,1]
  输出: 1

  示例 2:

  输入: [4,1,2,1,2]
  输出: 4

分析:

  利用异或(xor)运算,两个相同的数异或为0

代码如下:

技术图片
 1 class Solution {
 2 public:
 3     int singleNumber(int A[], int n) {
 4         int ans = 0;
 5         for(int i = 0; i < n; ++i) {
 6             ans ^= A[i];
 7         }
 8         return ans;
 9     }
10 };
View Code

 

SingleNumber II:

题目链接:https://leetcode-cn.com/problems/single-number-ii/

题意:

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。

说明:

你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

示例 1:

  输入: [2,2,3,2]
  输出: 3

示例 2:

  输入: [0,1,0,1,0,1,99]
  输出: 99

分析:

TODO

代码如下:

TODO

SingleNumber III:

题目链接:https://leetcode-cn.com/problems/single-number-iii/

题意:

给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。

示例 :

输入: [1,2,1,3,2,5]
输出: [3,5]

注意:

    1. 结果输出的顺序并不重要,对于上面的例子, [5, 3] 也是正确答案。
    2. 你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?

分析:

TODO

代码如下:

TODO

以上是关于Leetcode: SingleNumber I & II & III 136/137/260的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode刷题记录-20181022

Leetccode 136 137 260 SingleNumber I II III

Leetcode-136 Single Number

leetcode260

Leetcode 5

leetcode 137 && 360一面算法