有很多带有匹配项的难题,包括添加,删除或移动一定数量的匹配项以创建新的数字或形状。就像使用数字时钟一样。
给定12小时数字时钟上的有效时间,请输出需要移动最少行的数字,以使时钟上的每个可见数字都变为该数字。如果最小位数多于一位,则全部输出。如果不可能使每个数字都相同,则输出-1
或输出非0的虚假值(您会得到很多)。
时钟数字如下所示:
|
|
_
_|
|_
_
_|
_|
|_|
|
_
|_
_|
_
|_
|_|
_
|
|
_
|_|
|_|
_
|_|
_|
_
| |
|_|
测试用例:
输入: 123
时钟显示:
_ _
| : _| _|
| : |_ _|
输出: 4
说明:的显示1:23
要求总共绘制12条线。因此,对于每个数字都相同,每个数字必须具有4行。仅有4行的数字是4
。因此,答案必须是4
。
输入: 1212
时钟显示:
_ _
| _| : | _|
| |_ : | |_
输出: -1
说明:的显示12:12
需要14行。14除以4不是整数,因此不可能每个数字都相同。
输入: 654
时钟显示:
_ _
|_ : |_ |_|
|_| : _| |
输出: 5
说明:总行数为15。15除以3为5,因此每个数字必须有5行。有5条线中仅有的数字是2
,3
和5
。答案是5
因为只需要移动2就可以使每个数字5。只需将6的左下方的行移动到4的底部,那么您将:
_ _
|_ : |_ |_|
_| : _| _|
然后,正如您所看到的,您所要做的就是将原来是4的数字的右上方的行移到顶部,您将得到5:55
。要使每个数字为a 2
或a ,3
将需要2个以上的动作。
输入: 609
时钟显示:
_ _ _
|_ : | | |_|
|_| : |_| _|
输出:609
(6,0,9
或者[6,0,9]
也行)。
说明:6
,0
和9
是仅有的6行数字。因此,它们也是唯一可能的解决方案。不难看出,要使其中任何一个成为唯一的数字,都需要两个步骤。因此,您输出所有三个数字。
笔记:
- 尽管输入时间必须有效,但输出时间无效(例如
999
,由于输出正常)。 - 我对输入非常灵活。您可以要求前导0。可以使用带小数点的数字。您可以使用字符串。您可以使用数组。您可以为每个数字设置一个参数。