136. Single Number

来源:互联网 发布:前台数据传到msql乱码 编辑:程序博客网 时间:2024/06/06 00:15

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?


分析题目

给一组整形数字,其中除了一个数字只出现过一次之外,其他数字均出现两次,让找出只出现过一次的这个数。
要求:O(n)时间复杂度


解题思路

由于题目要求O(n)时间复杂度,所以不能通过遍历统计每一个元素的个数来找出那个单独的数字。由于相同的两个整数进行异或结果为0,而零和任意数异或结果任是那个数,结合题目,其他数字均出现两次,又由于异或运算符合交换律,所以我们为了想起来容易,假设那个单独的数在数组最后一个,而其他重复的都排好了顺序,比如:112233445,将这一组数进行异或,相当于零和5进行了异或,结果就是5,也就是我们要找的那个单独的数字。


代码实现

int singleNumber(int[] nums) {    int result = 0;    for (int i = 0; i<nums.length; i++){        result ^=nums[i];    }    return result;}
0 0
原创粉丝点击