【Leetcode】846. Hand of Straights
题目地址:https://www.lintcode.com/problem/multi-keyword-sort/description给定一个由长度为222的数组作为元素的数组,要求将其排序,若第二关键字不等则按照第二关键字由大到小排,若相等则按第一关键字由小到大排。代码如下:import java.util.Arrays;public class Solution {/*** @param a
·
题目地址:
https://leetcode.com/problems/hand-of-straights/description/
给定一个长 n n n数组 a a a,再给定一个正整数 k k k,问 a a a是否能分成若干组,每组恰好 k k k个数,并且这 k k k个数是连续的 k k k个整数。
将这些数存起来,每次挑出最小值 x x x,然后依次删掉 x , x + 1 , . . . , x + k − 1 x,x+1,...,x+k-1 x,x+1,...,x+k−1代码如下:
class Solution {
public:
bool isNStraightHand(vector<int> &a, int sz) {
int n = a.size();
if (n % sz) return false;
map<int, int> mp;
for (int x : a) mp[x]++;
for (auto [k, cnt] : mp) {
if (cnt <= 0) continue;
for (int i = 1; i < sz; i++) {
int &c = mp[k + i];
if (c < cnt) return false;
c -= cnt;
}
}
return true;
}
};
时间复杂度 O ( n log n ) O(n\log n) O(nlogn),空间 O ( n ) O(n) O(n)。
更多推荐


所有评论(0)