`
frank-liu
  • 浏览: 1666071 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

leetcode: Single Number

 
阅读更多

问题描述:

Given an array of integers, every element appears twice except for one. Find that single one.

Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

原问题链接:https://leetcode.com/problems/single-number/

 

问题分析

  这个问题的解决思路相对来说就比较简单了。只是用到了一个小的技巧。如果能想到的话就没什么了。在问题描述中说到,数组中所有元素都出现两次,除了一个元素。而这里就是要找这个独特的元素。那么有没有什么办法找到这个元素呢?

  一种理想的情况就是我通过一次遍历,能够使得所有重复出现的元素都被消去了,只留下这个独特的元素。这个时候,如果我们借用一个位运算的小技巧,比如异或运算,那么就可以得到这个结果了。因为对于两个相同的元素来说,它们的异或运算结果就是0。所以我们对里面所有的元素按照这个方式遍历一遍,就可以得到最终的结果。

  详细的代码实现如下:

 

public class Solution {
    public int singleNumber(int[] nums) {
        int result = nums[0];
        for(int i = 1; i < nums.length; i++) result ^= nums[i];
        return result;
    }
}

 

1
7
分享到:
评论
4 楼 frank-liu 2016-07-05  
mfkvfn 写道
frank-liu 写道
mfkvfn 写道
你这逻辑有问题好吧。
你用数组[1,2,3]运行一下结果看看。结果是0,但是所有的数字只出现了1次。

另外你的题目里要求“找出所有只出现了一次有数字”,你的代码结果是“数组中是不是存在没出现2次的数字”。文不对题,况且结果还是错误的。

这是问题的描述:
Given an array of integers, every element appears twice except for one. Find that single one.
它的意思是说给定一组整数,每个元素会出现两次,除了一个元素。就是说,它给的前提条件就是不包含你说的[1, 2, 3]这种情况。而且只会有一个只出现一次的元素。

那你可以用[1,1,2,2,3]测试一下看看。

你没看明白问题的描述和我代码的意思。你跑一下我的程序看看,看你用[1, 1, 2, 2, 3]的结果是不是返回3。
3 楼 mfkvfn 2016-07-05  
frank-liu 写道
mfkvfn 写道
你这逻辑有问题好吧。
你用数组[1,2,3]运行一下结果看看。结果是0,但是所有的数字只出现了1次。

另外你的题目里要求“找出所有只出现了一次有数字”,你的代码结果是“数组中是不是存在没出现2次的数字”。文不对题,况且结果还是错误的。

这是问题的描述:
Given an array of integers, every element appears twice except for one. Find that single one.
它的意思是说给定一组整数,每个元素会出现两次,除了一个元素。就是说,它给的前提条件就是不包含你说的[1, 2, 3]这种情况。而且只会有一个只出现一次的元素。

那你可以用[1,1,2,2,3]测试一下看看。
2 楼 frank-liu 2016-07-05  
mfkvfn 写道
你这逻辑有问题好吧。
你用数组[1,2,3]运行一下结果看看。结果是0,但是所有的数字只出现了1次。

另外你的题目里要求“找出所有只出现了一次有数字”,你的代码结果是“数组中是不是存在没出现2次的数字”。文不对题,况且结果还是错误的。

这是问题的描述:
Given an array of integers, every element appears twice except for one. Find that single one.
它的意思是说给定一组整数,每个元素会出现两次,除了一个元素。就是说,它给的前提条件就是不包含你说的[1, 2, 3]这种情况。而且只会有一个只出现一次的元素。
1 楼 mfkvfn 2016-07-05  
你这逻辑有问题好吧。
你用数组[1,2,3]运行一下结果看看。结果是0,但是所有的数字只出现了1次。

另外你的题目里要求“找出所有只出现了一次有数字”,你的代码结果是“数组中是不是存在没出现2次的数字”。文不对题,况且结果还是错误的。

相关推荐

    leetcode切割分组-leetcode:leetcode

    136_single_number.py # 位操作:异或(xor)操作 x ^ 0 = x; x ^ x = 0 sum 001_two_sum.py # 求list中能加和成指定值的两个位置 015_3_sum**.py # 求list中能加和成0的三个值 数列 004_median_of_two_sorted_arrays....

    dna匹配leetcode-leetcode:leetcode刷题

    dna匹配 leetcode leetcode刷题--C++ ...Single Number 异或 Copy List with Random Pointer 单链表 map Max Points on a Line 斜率 map, int&gt; Fraction to Recurring Decimal map long long 正负号 Repeated DNA S

    leetcode答案-leetcode:leetcode

    Single Number 碰巧我知道异或的解法。如果不知道的话,想想还是有点费事的。 Maximum Depth of Binary Tree 这?也太简单了吧。。一行代码,一个尾递归搞定啊。。 终于想清楚了,leetcode的AC率应该是:在线编辑、...

    leetcode分类-LeetCode:LeetCode在线裁判C++

    SingleNumber 其他算法 各种SingleNumber变种 LinkListCycle I II 其他变种 编程之美 Preorder Traversal Inorder Traver sal postorder 非递归 不用栈! 字符串常用操作 字符串 各种转换 Pow(x,n) 优化 ...

    LeetCode:LeetCode解决方案

    preorder-traversal链表reorder-list链表linked-list-cycle-ii链表linked-list-cycle动态规划word-break-ii动态规划word-break链表copy-list-with-random-pointer复杂度single-number-ii复杂度single-number动态规划

    LeetCode:LeetCode题解

    LeetCode LeetCode题解 传送门 # 标题 解决方案 困难 笔记 1个 简单的 3 简单的 7 简单的 9 简单的 22 中等的 26 简单的 27 Remove_Element ... Single_NumberII Java 中等的 167 Two_Sum_II_Input_

    leetcode和oj-leetCode:尝试一些OJ

    Single Number 52.2% Easy 371 两个整数的和 51.6% Easy 104 二叉树的最大深度 50.1% Easy 325% Add the Easy 389.数字 49.9% 简单 226 反转二叉树 48.9% 简单 283 移动零点 46.9% 简单 404 左叶总和 45.5% 简单 383...

    leetcoderuntimeerrorjava-leetcode:面试准备的数据结构和算法

    singleNumber ( self , nums : List [ int ]) -&gt; int : 它是所谓的“类型提示”(或“函数注释”;自 Python 3.0 起可用)。 -&gt; List[int] 意味着函数应该返回一个整数列表。 nums: List[int], target: int 表示 ...

    leetcode添加元素使和等于-LeetCode:力扣唱片

    leetcode添加元素使和等于 LeetCode LeetCode Record 归并快排的区别: 思想不同:归并从局部到整体,快排...single out the missing number. How? First, we need to understand the properties of XOR: firstly, XOR'

    leetcode双人赛-java_leetcode:java打印letcode

    number. 向后遍历数组,直到获得两个数的和是给定的值 You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single...

    颜色分类leetcode-leetcode.etc:OJ、leetcode等解决方案

    颜色分类leetcode leetcode.etc My solutions of the problems in Online judge website, leetcode, lintcode, etc. leetcode: 13 problems solved lintcode: 49 problems solved Title URL Solution Difficulty ...

    leetcode Single Number II - 位运算处理数组中的数 - 代金桥 - 博客园1

    扩展二:给定一个包含n个整数的数组,有一个整数x出现b次,一个整数y出现c次,其他所有的数均出现a次,其中b和c均不是a的倍数,找出x和y。中每一位二进制位1出

    LeetCode最全代码

    260 | [Single Number III](https://leetcode.com/problems/single-number-iii/) | [C++](./C++/single-number-iii.cpp) [Python](./Python/single-number-iii.py) | _O(n)_ | _O(1)_ | Medium || 268| [Missing ...

    leetcode答案-leetcode-java:leetcode的Java代码

    leetcode 答案leetcode-java leetcode.com 的 Java 答案 ================索引================ ...Single Number com.leetcode.tree Balanced Binary Tree Maximum Depth of Binary Tree Same Tree

    Leetcode的ac是什么意思-LeetCodeInJava:leetcode-java

    Leetcode的ac是什么意思 LeetCodeInJava List #98 Validate Binary Search Tree #100 Same Tree #104 Maximum Depth of Binary Tree #122 Best Time to Buy and Sell Stock II #136 Single Number #150 Evaluate ...

    leetcode浇花-LCSolutions:我的力扣解决方案

    leetcode 浇花力扣解决方案 简单的 #0001 - Two Sum #0007 - Reverse Integer #0009 - Palindrome Number #0035 - Search Insert Position #0058 - Length of Last Word #0066 - Plus One #0083 - Remove Duplicates...

    LeetCode2 Add Two Numbers

    The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list. You may assume the two numbers do not contain any leading ...

    lrucacheleetcode-LeetCode_30Day:力扣30天挑战赛

    lru缓存leetcode 力扣_30天 力扣 30 天挑战赛 日 问题描述 问题和解决方案链接 Git 解决方案页面 1 SINGLE NUMBER 2 HAPPY NUMBER 3 MAXIMUM SUBARRAY 4 Move Zeroes 5 Best Time to Buy and Sell Stock II 6 GROUP ...

    leetcode2-codinginterview:Naphda编码面试研究

    leetcode 2 Naphda 编码面试研究 免责声明 该部门不隶属于 Slack 的实际管理部门,是衍生自 Slack 频道内部的独立小组。 内容 如何使用 问题清单 帮助更新 如何使用 简单的。 在 fork 这个仓库之后,在它前面发布你...

    leetcode蓄水池JAVA-leetcode-with-[removed]:wrapped_gift:用各种解决方案和单元测试来练习Leetcode

    https://leetcode.com/problems/single-number/ level : - easy tags : - recursive - linked list solutions : - reverseList - runtime : 52 ms, beats 99.80% - memory : 35 MB, beats 47.37% - ...

Global site tag (gtag.js) - Google Analytics