建设银行网站理财产品为何不让买,怎么做投票 网站,忻州免费建网站,注册免费的网站1. 题目
爱丽丝有一手#xff08;hand#xff09;由整数数组给定的牌。
现在她想把牌重新排列成组#xff0c;使得每个组的大小都是 W#xff0c;且由 W 张连续的牌组成。
如果她可以完成分组就返回 true#xff0c;否则返回 false。
示例 1#xff1a;
输入#xf…1. 题目
爱丽丝有一手hand由整数数组给定的牌。
现在她想把牌重新排列成组使得每个组的大小都是 W且由 W 张连续的牌组成。
如果她可以完成分组就返回 true否则返回 false。
示例 1
输入hand [1,2,3,6,2,3,4,7,8], W 3
输出true
解释爱丽丝的手牌可以被重新排列为 [1,2,3][2,3,4][6,7,8]。示例 2
输入hand [1,2,3,4,5], W 4
输出false
解释爱丽丝的手牌无法被重新排列成几个大小为 4 的组。提示
1 hand.length 10000
0 hand[i] 10^9
1 W hand.length来源力扣LeetCode 链接https://leetcode-cn.com/problems/hand-of-straights 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
用map的有序性对数字进行计数迭代器循环遍历map计数减为0时删除元素
class Solution {
public:bool isNStraightHand(vectorint hand, int W) {int i, n hand.size(), prev, count 0;if(n%W) return false;//个数不能整除错if(W 1) return true;//1肯定对mapint,int m;//数字个数for(i 0; i n; i)m[hand[i]];auto it m.begin();for(i 0; i n; i){if(count ! 0 it-first - prev ! 1)return false;//比前一个多1吗prev it-first;m[prev]--;//计数-1if(m[prev] 0)m.erase(it);//计数为0删除,这么写避免迭代器失效elseit;if(it m.end())//到末尾了跳到beginit m.begin();count;//个数1if(count W){ //满了W个count 0;it m.begin();}}return true;}
};168 ms 15.9 MB