CodingInterview-翻转单词顺序列

首先对数组进行排序,然后找出王的数目,之后开始遍历,看王是否能填补所有的空隙。

另,使用 sort 函数的时间复杂度是 O(nlogn),如果要降低复杂度,可以使用一个长度为 13 的哈希表代替。不过因为数据很少,所以使用哈希表没有太大的意义。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
public:
bool IsContinuous(vector<int> numbers) {
if(numbers.empty()) return false;
sort(numbers.begin(),numbers.end());
int kingNum=0;
while(kingNum<numbers.size() && numbers[kingNum]==0) kingNum++;
for(int i=kingNum+1;i<numbers.size();i++){
int diff=numbers[i]-numbers[i-1];
if(diff==1) continue;
else if(diff==0) return false;
kingNum-=diff-1;
if(kingNum<0) return false;
}
return true;
}
};