PROBLEM

剑指 Offer 61. 扑克牌中的顺子

难度 简单

MY ANSWER

遍历数组,跳过大小王,使用set检查是否有重复,重复则不连续。同时记录数组中最大最小值,若max - min > 4,则不可能连续。时间复杂度O(1),空间复杂度O(1)。

class Solution {
public:
bool isStraight(vector<int>& nums) {
set<int> dic;
int max = 0, min = 14;
for(int i = 0; i < nums.size(); i++) {
if(nums[i]) {
if(nums[i] < min) {
min = nums[i];
}
if(nums[i] > max) {
max = nums[i];
}
if(max - min >= 5 || dic.find(nums[i]) != dic.end()) {
return false;
}
dic.insert(nums[i]);
}
}
return true;
}
};

BETTER SOLUTION

相同。

SUMMARY

使用set来检查是否重复。