class Solution {
public boolean isStraight(int[] nums) {
Set<Integer> set = new HashSet<>();
int max=-1,min=14;
for(int i=0;i<nums.length;i++){
if(nums[i]==0) continue;
if(set.contains(nums[i])) return false;
set.add(nums[i]);
max = Math.max(nums[i],max);
min = Math.min(nums[i],min);
}
return max-min<5;
}
}
“`c++
//时间复杂度:O(n)
//空间复杂度:O(n)
class Solution {
public:
bool isStraight(vector& nums) {
set s;
int Max = -1, Min = 20;
for (int i = 0; i < nums.size(); i++) {
if (nums[i] == 0) {
continue;
}
if (s.count(nums[i])) {
return false;
}
s.insert(nums[i]);
Max = max(Max, nums[i]);
Min = min(Min, nums[i]);
}
return Max - Min < 5;
}
class Solution {
public boolean isStraight(int[] nums) {
//排序法
//成立条件
//1.不存在重复的数,大小王除外
//2.最大值 - 最小值 < 5,大小王除外
Set<Integer> set = new HashSet<>();
int max = -1, min = 20;
for(int i = 0; i <nums.length; i++){
if(nums[i] == 0)continue;
if(set.contains(nums[i]))return false;
set.add(nums[i]);
max = Math.max(nums[i], max);
min = Math.min(nums[i], min);
}
return max - min < 5;
//时间复杂度:O(n)
//空间复杂度:O(n)
}
}
func isStraight(nums []int) bool {
numSet := make(map[int]bool)
max, min := math.MinInt32, math.MaxInt32
for _, num := range nums {
if num == 0 {
//大小王直接跳过
continue
}
if numSet[num] {
//重复数字
return false
}
numSet[num] = true
if num > max {
max = num
}
if num < min {
min = num
}
}
return max - min < 5
}
class Solution {
public boolean isStraight(int[] nums) {
//分析 当给定数组最小min max
//非大小王重复 那就不是顺子
// 非重复 max -min <5 一定为顺子
// max-min>=5 不是
int min =20;
int max =0;
Set set =new HashSet();
for(int i=0;i<nums.length;i++)
{
if(nums[i]0)
{
function isStraight(nums: number[]): boolean {
let max = 0,min = 14;
let set = new Set<number>();
for(let i of nums) {
if(i == 0) continue;
max = Math.max(max,i);
min = Math.min(min,i);
if(set.has(i)) return false;
set.add(i);
}
return max - min < 5;
};
共以下 16 个回答
c++ 代码 排查& nums)
class Solution {
public:
bool isStraight(vector
{ bool c=false;
int vv=0;
sort(nums.begin(),nums.end());
for(int i=0;i<nums.size()-1;i++)
{
if(nums[i]0)
vv++;
}
for(int i=0;i<nums.size()-1;i++)
{
if(nums[i]!=0)
{
if(nums[i+1]-nums[i]1)
c=true;
else
{
if(nums[i+1]-nums[i]0)
{
c=false;
break;
}
if(nums[i+1]-nums[i]<=vv+1)
c=true,vv=0;
else
{
c=false;
break;
}
};
插入代码
“`c++& nums) { s;
//时间复杂度:O(n)
//空间复杂度:O(n)
class Solution {
public:
bool isStraight(vector
set
int Max = -1, Min = 20;
};
思路:set.contains()方法直接可判断有没有这个元素,这个没想到
找规律
class Solution { set =new HashSet ();
public boolean isStraight(int[] nums) {
//分析 当给定数组最小min max
//非大小王重复 那就不是顺子
// 非重复 max -min <5 一定为顺子
// max-min>=5 不是
int min =20;
int max =0;
Set
for(int i=0;i<nums.length;i++)
{
if(nums[i]0)
{
}
最大最小值相减
以下是代码
7.29
Day20:下面是代码