题目:
Given an array of integers, every element appears three times except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
我的解法:
(1)算法思想:
本题是Single Number 的升级版(见博文《Single Number》)。先用快排算法将数组排序,然后遍历一次数组即可:对于i,如果A[i]=A[i+1],则将i加上3,否则返回A[i].
(2)代码如下:
class Solution {
public:
int partition(int A[],int low,int high){
int pivot=A[low];
while(low
=pivot&&high>low) --high;
A[low]=A[high];
while(A[low]<=pivot&&low