20250503 LeetCode每日一题——1007. 行相等的最少多米诺旋转
1007. 行相等的最少多米诺旋转
在一排多米诺骨牌中,tops[i] 和 bottoms[i] 分别代表第 i 个多米诺骨牌的上半部分和下半部分。(一个多米诺是两个从 1 到 6 的数字同列平铺形成的 —— 该平铺的每一半上都有一个数字。)
我们可以旋转第 i 张多米诺,使得 tops[i] 和 bottoms[i] 的值交换。
返回能使 tops 中所有值或者 bottoms 中所有值都相同的最小旋转次数。
如果无法做到,返回 -1.
示例 1:

1 | 输入:tops = [2,1,2,4,2,2], bottoms = [5,2,6,2,3,2] |
示例 2:
1 | 输入:tops = [3,5,1,2,3], bottoms = [3,6,3,3,4] |
提示:
2 <= tops.length <= 2 * 104bottoms.length == tops.length1 <= tops[i], bottoms[i] <= 6
题解
暴力解法。首先遍历tops和bottoms两个数组,记录下两个数组中的数字1-6出现的次数。能够符合条件的数组,相同数字出现的次数之和一定大于数组长度,否则返回-1。
对于符合条件的数组,按照上述筛选出的符合条件的数字进行遍历:
- 遍历
top,若top中的数字不是上述符合条件的数字,则验证bottom是否符合,不符合则返回-1,符合则step+1,记录下所有step; - 遍历
bottoms,重复针对tops的操作; - 针对上述两次遍历的所有
step,找出其中除-1外的最小值,否则返回-1。
1 | class Solution: |
提交记录
https://leetcode.cn/problems/minimum-domino-rotations-for-equal-row/submissions/627154458