Sigl num @leetcode

转载 2013年12月03日 15:05:38

eetcode -- Single Number

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

Could you implement it without using extra memory?

[解题思路]

以前看书时遇到过,一个数组中有一个元素出现一次,其他每个元素都出现两次

要求空间复杂度为O(1)

由于两个相同的元素异或的结果为0,而0^a==a,将数组中所有元素都进行异或,得到结果就是只出现一次的元素

复制代码
 1 public class Solution {
 2     public int singleNumber(int[] A) {
 3         // Note: The Solution object is instantiated only once and is reused by each test case.
 4         if(A == null || A.length == 0){
 5             return 0;
 6         }
 7         int result = A[0];
 8         
 9         for(int i = 1; i < A.length; i++){
10             result = result ^ A[i];
11         }
12         return result;
13     }
14 }
复制代码

 

本题扩展

1.一个数组中有两个元素只出现一次,其他所有元素都出现两次,求这两个只出现一次的元素

[解题思路]

将数组所有元素都进行异或得到一个不为0的结果,根据这个结果中的不为0的某一位将数组分成两组

将两组中的元素进行异或,如两个数组的异或值都不为0,则得到最后结果

 

2.一个数组中有一个元素只出现1次,其他所有元素都出现k次,求这个只出现1次的元素

[解题思路]

当k为偶数时,同lss

当k为奇数时,将数组中每个元素的每一位相加mod k,得到结果即位出现1次的元素,时间复杂度O(nlen),空间复杂度为O(1)

相关文章推荐

Leetcode_num15_Maximun Subarray

题目:Find the contiguous subarray within an array (containing at least one number) which has the large...

leetcode 第一题 Two Num java

public class Solution { public int[] twoSum(int[] numbers, int target) { int length=numb...

Leetcode_num4_Reverse Integer

题目: Reverse digits of an integer. Have you thought about this? Here are some good questions to as...

leetcode_num6_Zigzag

The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (y...

1.Two Num | LeetCode OJ(浅谈hash_map,和map)

September 23, 2016 作者:dengshuai_super 出处:http://blog.csdn.net/dengshuai_super/article/details/52...

LeetCode Num74_Search a 2D Matrix

问题描述:   Write an efficient algorithm that searches for a value in an m x n matrix. This mat...

LeetCode Num64_Minimum Path Sum

问题描述:   Given a m x n grid filled with non-negative numbers, find a path from top left to botto...

LeetCode Num34_Search for a Range

问题描述:   Given a sorted array of integers, find the starting and ending position of a given target ...

LeetCode #001 Two Num

LeetCode 一天一题001 Two Num Given an array of integers, find two numbers such that they add up to a s...

LeetCode 1 two num

[Chinese ver]1.两数求和 。给定一个整数的数组,返回两个数字的索引使得这两个数字加起来成为一个指定的目标值。 你可以假设每个输入都至少有一个解决方案,并且你不能使用相同的元素两次。Ex...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Sigl num @leetcode
举报原因:
原因补充:

(最多只允许输入30个字)