首先对数组进行排序,然后找出王的数目,之后开始遍历,看王是否能填补所有的空隙。
另,使用 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; } };
|