Skip to content

Latest commit

 

History

History

2229.Check if an Array Is Consecutive

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

English Version

题目描述

给你一个整数数组 nums ,如果 nums 是一个 连贯数组 ,则返回 true ,否则返回 false

如果数组包含 [x, x + n - 1] 范围内的所有数字(包括 xx + n - 1 ),则该数组为连贯数组;其中 x 是数组中最小的数,n 是数组的长度。

 

示例 1:

输入:nums = [1,3,4,2]
输出:true
解释:
最小值是 1 ,数组长度为 4 。
范围 [x, x + n - 1] 中的所有值都出现在 nums 中:[1, 1 + 4 - 1] = [1, 4] = (1, 2, 3, 4) 。
因此,nums 是一个连贯数组。

示例 2:

输入:nums = [1,3]
输出:false
解释:
最小值是 1 ,数组长度为 2 。 
范围 [x, x + n - 1] 中的所有值没有都出现在 nums 中:[1, 1 + 2 - 1] = [1, 2] = (1, 2) 。 
因此,nums 不是一个连贯数组。 

示例 3:

输入:nums = [3,5,4]
输出:true
解释:
最小值是 3 ,数组长度为 3 。
范围 [x, x + n - 1] 中的所有值都出现在 nums 中:[3, 3 + 3 - 1] = [3, 5] = (3,4,5) 。
因此,nums 是一个连贯数组。

 

提示:
  • 1 <= nums.length <= 105
  • 0 <= nums[i] <= 105

解法

Python3

class Solution:
    def isConsecutive(self, nums: List[int]) -> bool:
        mi, mx = min(nums), max(nums)
        n = len(nums)
        return len(set(nums)) == n and mx == mi + n - 1

Java

class Solution {
    public boolean isConsecutive(int[] nums) {
        int mi = nums[0];
        int mx = nums[0];
        Set<Integer> s = new HashSet<>();
        for (int v : nums) {
            mi = Math.min(mi, v);
            mx = Math.max(mx, v);
            s.add(v);
        }
        int n = nums.length;
        return s.size() == n && mx == mi + n - 1;
    }
}

C++

class Solution {
public:
    bool isConsecutive(vector<int>& nums) {
        unordered_set<int> s(nums.begin(), nums.end());
        int mi = *min_element(nums.begin(), nums.end());
        int mx = *max_element(nums.begin(), nums.end());
        int n = nums.size();
        return s.size() == n && mx == mi + n - 1;
    }
};

Go

func isConsecutive(nums []int) bool {
	s := make(map[int]bool)
	mi, mx := nums[0], nums[0]
	for _, v := range nums {
		s[v] = true
		mi = min(mi, v)
		mx = max(mx, v)
	}
	return len(s) == len(nums) && mx == mi+len(nums)-1
}

func max(a, b int) int {
	if a > b {
		return a
	}
	return b
}

func min(a, b int) int {
	if a < b {
		return a
	}
	return b
}

TypeScript

...