[LeetCode OJ] Single Number之一 ——Given an array of integers, every element appears twice except for one. Find that single one.


 1 class Solution {
2 public:
3 int singleNumber(int A[], int n) {
4 int i,j;
5 for(i=0; i<n; i++)
6 {
7 for(j=i+1; j<n; j++)
8 {
9 if(A[j]==A[i])
10 {
11 int temp = A[i+1];
12 A[i+1] = A[j];
13 A[j] = temp;
14 i++;
15 break;
16 }
17 }
18 if(j==n)
19 return A[i];
20 }
21 }
22 };

上面的是传统方法,时间复杂度是O(n2),空间复杂度是O(1)。


1 class Solution {
2 public:
3 int singleNumber(int A[], int n) {
4 int result=0;
5 for(int i=0; i<n; i++)
6 result = result ^ A[i];
7 return result;
8 }
9 };

用位异或运算实现,时间复杂度和空间复杂度均为O(1).

运用了异或运算具有交换律和结合律的性质。

交换律: a^b = b^a

结合律: (a^b)^c = a^(b^c)

另外,a^a=0。

[LeetCode OJ] Single Number之一 ——Given an array of integers,
every element appears twice except for one. Find that single one.

时间: 2024-11-23 14:20:53

[LeetCode OJ] Single Number之一 ——Given an array of integers, every element appears twice except for one. Find that single one.的相关文章

[LeetCode OJ] Single Number之二 ——Given an array of integers, every element appears THREE times except for one. Find that single one.

1 class Solution { 2 public: 3 int singleNumber(int A[], int n) { 4 int bits = sizeof(int)*8; 5 int result=0; 6 for(int i=1; i<=bits; i++) 7 { 8 int w=0; 9 int t=1; 10 11 for(int j=0; j<n; j++) 12 w += (A[j]>>(i-1))&t; 13 result+= (w%3)<

&lt;LeetCode OJ&gt;Missing Number【268】

268. Missing Number My Submissions Question Total Accepted: 31740 Total Submissions: 83547 Difficulty: Medium Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missing from the array. For example, Given num

&lt;LeetCode OJ&gt; 200. Number of Islands

Total Accepted: 48411 Total Submissions: 171609 Difficulty: Medium Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or verticall

LeetCode OJ:Search in Rotated Sorted Array II(翻转排序数组的查找)

Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed? Would this affect the run-time complexity? How and why? Write a function to determine if a given target is in the array. 这个和前面的一个不一样就在于可能会有重复的数字,那么判断的时候就应该注意了,遇到start

LeetCode OJ:Number of 1 Bits(比特1的位数)

Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as the Hamming weight). For example, the 32-bit integer ’11' has binary representation 00000000000000000000000000001011, so the function should retu

&lt;LeetCode OJ&gt; 26. Remove Duplicates from Sorted Array

26. Remove Duplicates from Sorted Array My Submissions Question Total Accepted: 104150 Total Submissions: 322188 Difficulty: Easy Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.

LeetCode OJ:Number of Islands(孤岛计数)

Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may assume all four edges of the grid are all surrounded by

LeetCode OJ:Remove Duplicates from Sorted Array(排好序的vector去重)

Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length. Do not allocate extra space for another array, you must do this in place with constant memory. For example,Given input array nums 

LeetCode OJ Happy Number

Write an algorithm to determine if a number is "happy". A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the