LEETCODE 1275. Find Winner on a Tic Tac Toe Gam 解题思路分析

题目大意:

找出井字棋的获胜者

A 和 B 在一个 3 x 3 的网格上玩井字棋。

井字棋游戏的规则如下:

  • 玩家轮流将棋子放在空方格 (” “) 上。
  • 第一个玩家 A 总是用 “X” 作为棋子,而第二个玩家 B 总是用 “O” 作为棋子。
  • “X” 和 “O” 只能放在空方格中,而不能放在已经被占用的方格上。
  • 只要有 3 个相同的(非空)棋子排成一条直线(行、列、对角线)时,游戏结束。
  • 如果所有方块都放满棋子(不为空),游戏也会结束。
  • 游戏结束后,棋子无法再进行任何移动。

给你一个数组 moves,其中每个元素是大小为 2 的另一个数组(元素分别对应网格的行和列),它按照 A 和 B 的行动顺序(先 A 后 B)记录了两人各自的棋子位置。

如果游戏存在获胜者(A 或 B),就返回该游戏的获胜者;如果游戏以平局结束,则返回 “Draw”;如果仍会有行动(游戏未结束),则返回 “Pending”。

你可以假设 moves 都 有效(遵循井字棋规则),网格最初是空的,A 将先行动。

继续阅读
发表在 leetcode | 标签为 , , , | 留下评论

LEETCODE 1276. Number of Burgers with No Waste of Ingredients 解题思路分析

题目大意:

不浪费原料的汉堡制作方案

圣诞活动预热开始啦,汉堡店推出了全新的汉堡套餐。为了避免浪费原料,请你帮他们制定合适的制作计划。

给你两个整数 tomatoSlices 和 cheeseSlices,分别表示番茄片和奶酪片的数目。不同汉堡的原料搭配如下:

  • 巨无霸汉堡:4 片番茄和 1 片奶酪
  • 小皇堡:2 片番茄和 1 片奶酪

请你以 [total_jumbo, total_small]([巨无霸汉堡总数,小皇堡总数])的格式返回恰当的制作方案,使得剩下的番茄片 tomatoSlices 和奶酪片 cheeseSlices 的数量都是 0。

如果无法使剩下的番茄片 tomatoSlices 和奶酪片 cheeseSlices 的数量为 0,就请返回 []。

继续阅读
发表在 leetcode | 标签为 , , | 一条评论

LEETCODE 1274. Number of Ships in a Rectangle 解题思路分析

题目大意:

矩阵内船只的数量

(此题是 交互式问题)

在用笛卡尔坐标系表示的二维海平面上,有一些船。每一艘船都在一个整数点上,且每一个整数点最多只有 1 艘船。

有一个函数 Sea.hasShips(topRight, bottomLeft),输入参数为右上角和左下角两个点的坐标,当且仅当这两个点所表示的矩形区域(包含边界)内至少有一艘船时,这个函数才返回 true,否则返回 false。

给你矩形的右上角 topRight 和左下角 bottomLeft 的坐标,请你返回此矩形内船只的数目。题目保证矩形内 至多只有 10 艘船。

调用函数 hasShips 超过 400 次 的提交将被判为 错误答案(Wrong Answer)。同时,任何尝试绕过评测系统的行为都将被取消比赛资格。

继续阅读
发表在 leetcode | 标签为 , , | 留下评论

LEETCODE 1278. Palindrome Partitioning III 解题思路分析

题目大意:

分割回文串 III

给你一个由小写字母组成的字符串 s,和一个整数 k。

请你按下面的要求分割字符串:

首先,你可以将 s 中的部分字符修改为其他的小写英文字母。
接着,你需要把 s 分割成 k 个非空且不相交的子串,并且每个子串都是回文串。
请返回以这种方式分割字符串所需修改的最少字符数。

继续阅读
发表在 leetcode | 标签为 , , , , | 留下评论

LEETCODE 1277. Count Square Submatrices with All Ones 解题思路分析

题目大意:

统计全为 1 的正方形子矩阵

给你一个 m * n 的矩阵,矩阵中的元素不是 0 就是 1,请你统计并返回其中完全由 1 组成的 正方形 子矩阵的个数。

继续阅读
发表在 leetcode | 标签为 , , , , , , | 一条评论

LEETCODE 1181. Before and After Puzzle 解题思路分析

题目大意:

前后拼接

给你一个「短语」列表 phrases,请你帮忙按规则生成拼接后的「新短语」列表。

「短语」(phrase)是仅由小写英文字母和空格组成的字符串。「短语」的开头和结尾都不会出现空格,「短语」中的空格不会连续出现。

「前后拼接」(Before and After puzzles)是合并两个「短语」形成「新短语」的方法。我们规定拼接时,第一个短语的最后一个单词 和 第二个短语的第一个单词 必须相同。

返回每两个「短语」 phrases[i] 和 phrases[j]i != j)进行「前后拼接」得到的「新短语」。

注意,两个「短语」拼接时的顺序也很重要,我们需要同时考虑这两个「短语」。另外,同一个「短语」可以多次参与拼接,但「新短语」不能再参与拼接。

请你按字典序排列并返回「新短语」列表,列表中的字符串应该是 不重复的 。

继续阅读
发表在 leetcode | 标签为 , , | 留下评论

LEETCODE 1182. Shortest Distance to Target Color 解题思路分析

题目大意:

与目标颜色间的最短距离

给你一个数组 colors,里面有 1、2、 3 三种颜色。
我们需要在 colors 上进行一些查询操作 queries,其中每个待查项都由两个整数 i 和 c 组成。
現在请你帮忙设计一个算法,查找从索引 i 到具有目标顏色 c 的元素之间的最短距离。
如果不存在解決方案,请返回 -1。

继续阅读
发表在 leetcode | 标签为 , , , | 留下评论

LEETCODE 1183. Maximum Number of Ones 解题思路分析

题目大意:

矩阵中 1 的最大数量

有一个宽为width,高位height的矩阵M,其中每个格子的数值不是0就是1,另外矩阵M所有大小为 sideLength * sideLength 的子矩阵中,数字1的个数不能超过maxOnes。

求矩阵M中最多可以包含多少个1。

继续阅读
发表在 leetcode | 标签为 , , , | 一条评论

LEETCODE 1188. Design Bounded Blocking Queue 解题思路分析

题目大意:

设计有限阻塞队列

实现一个拥有如下方法的线程安全有限阻塞队列:

  • BoundedBlockingQueue(int capacity) 构造方法初始化队列,其中capacity代表队列长度上限。
  • void enqueue(int element) 在队首增加一个element. 如果队列满,调用线程被阻塞直到队列非满。
  • int dequeue() 返回队尾元素并从队列中将其删除. 如果队列为空,调用线程被阻塞直到队列非空。
  • int size() 返回当前队列元素个数。

你的实现将会被多线程同时访问进行测试。每一个线程要么是一个只调用enqueue方法的生产者线程,要么是一个只调用dequeue方法的消费者线程。size方法将会在每一个测试用例之后进行调用。

注意,请不要使用现有的有限阻塞队列来实现本题。

继续阅读
发表在 leetcode | 标签为 , , , | 留下评论

LEETCODE 1271. Hexspeak 解题思路分析

题目大意:

十六进制魔术数字

你有一个十进制数字,请按照此规则将它变成「十六进制魔术数字」:首先将它变成字母大写的十六进制字符串,然后将所有的数字 0 变成字母 O ,将数字 1  变成字母 I 。

如果一个数字在转换后只包含 {“A”, “B”, “C”, “D”, “E”, “F”, “I”, “O”} ,那么我们就认为这个转换是有效的。

给你一个字符串 num ,它表示一个十进制数 N,如果它的十六进制魔术数字转换是有效的,请返回转换后的结果,否则返回 “ERROR” 。

继续阅读
发表在 leetcode | 标签为 , , , | 一条评论