【剑指offer】【排序】61. 扑克牌中的顺子
题目链接:https://leetcode-cn.com/problems/bu-ke-pai-zhong-de-shun-zi-lcof/
思路
时间复杂度:O(nlogn)
空间复杂度: O(1)
- 将数据排序
- 第一次遍历数组(过滤掉有重复元素的),如果遇到非0元素,并且前后两个数相等,说明不是顺子, 直接返回false;
- 第二次遍历数组(判断是不是顺子),因为0是万能的,所以最后直接判断最大的数和不为0的最小的数的差值是否小于等于4;
是,true; 否,false; - 其它情况,都返回false;
排序
class Solution {
public:
bool isStraight(vector<int>& nums) {
sort(nums.begin(), nums.end());
for(int i = 1; i < nums.size(); i++)
if(nums[i] && nums[i] == nums[i - 1])
return false;
for(auto x : nums)
if(x) return nums.back() - x <= 4;
return false;
}
};
知识的价值不在于占有,而在于使用

浙公网安备 33010602011771号