[leetcode]136. Single Number@Java解题报告

来源:互联网 发布:教育软件 编辑:程序博客网 时间:2024/06/06 04:02

https://leetcode.com/problems/single-number/description/


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?


思路:用XOR求解

因为A XOR A = 0,且XOR运算是可交换的,于是,对于实例{2,1,4,5,2,4,1}就会有这样的结果:

(2^1^4^5^2^4^1) => ((2^2)^(1^1)^(4^4)^(5)) => (0^0^0^5) => 5

就把只出现了一次的元素(其余元素均出现两次)给找出来了!

package go.jacob.day803;import java.util.Arrays;public class Demo2 {/* * 用异或求解,不需要对数组进行排序 */public int singleNumber(int[] nums) {int res=0;for(int i=0;i<nums.length;i++){//异或res=res^nums[i];}return res;}/* * My solution */public int singleNumber_byme(int[] nums) {Arrays.sort(nums);for(int i=0;i<nums.length;i++){if(i==nums.length-1)return nums.length-1;if(nums[i]!=nums[i+1])return nums[i];}return -1;}}


原创粉丝点击