标签:
题目:
Given an array of integers, every element appears three times except for one. Find that single one.
1 int singleNumber(int A[], int n) { 2 for(int i = 0; i < n; i++) 3 { 4 if(count(A, A + n, A[i])<2) 5 return i; 6 } 7 }
1. 要求复杂度为O(n),白话点说也就是不能在一个n次循环里面添加任何循环,前面之所以失败就是因为这个原因。但是可以在循环外添加循环!!!
2. 既然可以在查找循环外添加循环,那么添加什么循环好呢?排序吧,没错!排序的数列干什么都方便!(感觉这个结论也适用很多地方)
排序之后就可以很方便地计算一个数在数列中出现了多少次了。一连出现多少次就是总共出现多少次了,方便吧。O(∩_∩)O~
1. 如果数列外空呢?
2 如果第一个是single number呢?
3 如果最后一个是single number呢?
reference:http://blog.csdn.net/kenden23/article/details/13625297
标签:
原文地址:http://www.cnblogs.com/hygeia/p/4687975.html