- 921. Minimum Add to Make Parentheses Valid 使括号有效的最少添加
- 915. Partition Array into Disjoint Intervals 分割数组
- 932. Beautiful Array 漂亮数组
- 940. Distinct Subsequences II 不同的子序列 II
题目地址:https://leetcode.com/problems/hand-of-straights/description/
Alice has a hand of cards, given as an array of integers.
Nowshe wants to rearrange the cards into groups so that each group is size W, and consists of W consecutive cards.
Return true if and only if she can.
Example 1:
Input: hand = [1,2,3,6,2,3,4,7,8], W = 3
Output: true
Explanation: Alice's hand can be rearranged as [1,2,3],[2,3,4],[6,7,8].
Example 2:
Input: hand = [1,2,3,4,5], W = 4
Output: false
Explanation: Alice's hand can't be rearranged into groups of 4.
Note:
1、 1<=hand.length<=10000;
2、 0<=hand[i]<=10^9;
3、 1<=W<=hand.length;
给出了一堆扑克牌,也给出了一个数字W,看这堆扑克牌能不能恰好全部拼成长度为W的顺子。
这个思路可以说很暴力了。先做个统计,得出手里都有哪些牌,然后找出最小的牌,从这个牌开始长度为W的遍历,判断能否构成长度为W的顺子,就这样求下去即可,直到所有的牌都结束。
做了一个优化的地方,找出最小的牌的个数,因为这个最小的牌只能和比它大的牌构成顺子,所以我们可以在遍历的时候把后面的牌的个数全部剪掉这个数字。
代码如下:
class Solution(object):
def isNStraightHand(self, hand, W):
"""
:type hand: List[int]
:type W: int
:rtype: bool
"""
cards = collections.Counter(hand)
while cards:
start = min(cards.keys())
start_val = cards[start]
for card in range(start, start + W):
if card not in cards:
return False
cards[card] -= start_val
if cards[card] == 0:
cards.pop(card)
elif cards[card] < 0:
return False
return not cards
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
同样的做法,如果提前做一个排序还是能加快这个运算的,这样就不用每次都去求min了。里面用到的一个技巧是range(W)之后做了一个翻转,也就是说先从大的值开始减,这样能保证cards[start]不受干扰。
class Solution(object):
def isNStraightHand(self, hand, W):
"""
:type hand: List[int]
:type W: int
:rtype: bool
"""
cards = collections.Counter(hand)
for start in sorted(cards):
if cards[start] > 0:
for j in range(W)[::-1]:
if start + j not in cards:
return False
cards[start + j] -= cards[start]
if cards[start + j] < 0:
return False
return True
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
用C++刷题的时候,使用Map保存每个数字的数量,因为map是自动排好序的。所以少了排序的步骤。统计个数之后,直接进行遍历,对于每个数字都向他后面搜索W - 1个数字。方法比较直白。
class Solution {
public:
bool isNStraightHand(vector<int>& hand, int W) {
map<int, int> count;
for (int h : hand) {
++count[h];
}
for (auto c : count) {
int cur = c.first;
int n = c.second;
if (n > 0) {
for (int i = 1; i < W; ++i) {
if (!count.count(cur + i)) {
return false;
}
count[cur + i] -= n;
if (count[cur + i] < 0)
return false;
}
}
}
return true;
}
};
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
DDKK.COM 弟弟快看-教程,程序员编程资料站,版权归原作者所有
本文经作者:负雪明烛 授权发布,任何组织或个人未经作者授权不得转发
这个问题在这里已经有了答案: CSS different border widths overlapping themselves (2 个答案) 关闭 8 年前。
题目地址:https://leetcode.com/problems/hand-of-straights/description/ 题目描述 Alice has a hand of cards,
我需要从一组给定坐标中找到最接近给定坐标点的坐标 (lat,lon)。类似于这个问题: Find the closest coordinate from a set of coordinates 但是
所以我的教授决定变聪明,为我的扑克项目设计了一手名为 EVEN STRAIGHT 的牌。这就像顺子,只是牌必须是连续的偶数。例如- 8,6,2,4,10 是偶数顺子。此外,一张 A(值为 1)可以用作
放大图像时遇到问题。我有一个如下所示的 png 文件: raw png 图像大小为 8px * 8px,上面有一些红色直线。但是当我用java绘制这个图像并将其放大时,就会发生这种情况:java im
我正在使用名为“Palanquin”的 Google 字体系列。不幸的是,Palanquin 无法呈现直引号(单引号和双引号)。相反,它将所有直引号呈现为结束弯引号。 这意味着如果用户在文本区域中键入
我有一个可以找到类型的线程池 here . 我尝试执行以下操作: /* Allocate a ThreadPool */ shared_ptr pool(new SpinTools::ThreadPo
我正在开发一个应用程序,我有一组轮廓(每个代表一条潜在线),我想检查轮廓/形状的“直度”。我用作引用的文章使用了以下技术: 它匹配一条穿过形状的“分段”线,就像这样- 然后对线的“直”程度进行评分。
我已经搜索了这个问题的答案并尝试了很多建议的解决方案,但似乎都没有用。我一直在为此苦苦挣扎,所以非常感谢任何见解。 我在 JS Canvas 上有 3 个形状(我想是矢量),每个形状的方向表示为偏离
我刚开始学习 Ruby,作为一名 .Net 开发人员,我想知道我是否应该直接使用 IronRuby,而不是先尝试一些纯 Ruby。 你怎么看?我会遗漏什么吗? -- 淫荡的 最佳答案 我会使用纯 ru
本文实例讲述了PHP排序算法之直接插入排序(Straight Insertion Sort)。分享给大家供大家参考,具体如下: 算法引入: 在这里我们依然使用《大话数据结构》里面的一个例子:
我需要画一条直线(出于内容分离的目的),然后在其末端开始一条连接到指定端点的曲线。 我的问题是在完成直线后开始绘制圆弧时发生急转弯。如何消除这个尖 Angular ? 作为一种解决方案,延长直线以平滑
我正在使用 Chart.JS 绘制数据集, 但是我得到了平滑的效果! 这是我得到的曲线: 这是我的代码: function plotChart(data, labels) { var line
使用直接 HTML 页面作为 Spark 模板的最简单方法是什么(IE,我不想通过 TemplateEngine 实现)。 我可以很好地使用模板引擎,就像这样: Spark.get("/test",
所以我正在为即将到来的 CSS 着色器规范开发着色器。我正在构建专门针对专业视频产品的东西,我需要分离出 alpha channel (作为亮度,我已经成功完成)和图像的“直接”版本,它没有 alph
我的 map 包含多个点,可以从用户经过的地方点击用户的位置,但是 the polyline is not shown on the roads, but shows a direct line fr
这是我的问题: 1) 我进行了多元线性回归:假设如下: lm(attitude~quality+price+location+Income) 我主要关心的是态度和素质的关系,其他变量都是控制变量。 2
我正在编写一个 Python 函数,用于识别扑克中的“顺子”。我的代码有效并且会识别顺子,但只给我直子中的数字,而不是花色。此外,其余代码是用卡片的特定格式编写的,即 python 字典格式,因此我需
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 9 年前。 Improve
我正在尝试构建一个自定义 View ,该 View 绘制一 strip 有斜条纹图案的线。它看起来应该类似于: 我认为使用 PathDashPathEffect 应该可以,但是当我将路径形状设置为直线
我是一名优秀的程序员,十分优秀!