Single Number

Single Number


今天是一道有关位运算的题目,来自LeetCode(#136),难度为Medium,Acceptance为46.5%

这类题目不需要太多的算法知识,需要的知识位运算的基础知识和经验。

题目如下

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 ?

解题思路及代码见阅读原文

思路如下

其实,该题的思路较为简单,只要想到使用位运算就很容易想到。题目中除一个数之外,其他数字都出现两次,可以想到两个相同的数做异或得到了,这样将所有的数做异或就可以得到那个只出现一次的数。

代码如下

java版
public class Solution {
    /**
     *@param A : an integer array
     *return : a integer 
     */
    public int singleNumber(int[] A) {
        int ans = 0;
        for(int i : A)
            ans ^= i;
        return ans;
    }
}
c++版
int singleNumber(int A[], int n) {
    int result = 0;
    for (int i = 0; i<n; i++) {
        result ^=A[i];
    }
    return result;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目描述 给你一个数组,除了x,数组中每个元素出现2次,让你求解出这个x。[leetcode136]https:/...
    futurehau阅读 426评论 0 0
  • Single Number II 今天是一道有关数学和位运算的题目,来自LeetCode#137,难度为Mediu...
    ab409阅读 649评论 0 0
  • Single Number III 首先,上周五没有更新,很是抱歉。因为周五的时候参加黑客马拉松,coding了2...
    ab409阅读 991评论 0 0
  • Given an array of integers, every element appears twice e...
    yayaQAQ阅读 351评论 0 1
  • 周二的课,晚自习因为要替中澳听讲座我们的高数角取消了,班里人几乎没有去的,只有我们宿舍全员到齐像智障一样。嫌疑人看...
    遇过即幸阅读 205评论 0 0