注意:另一个问题是这个问题的重复。如果我这个问题比那个问题早 6 个月发布,那么我的问题怎么会是重复的呢?
我有 4 个非负整数 a、b、c、d。它们都小于或等于 9。我必须以 24 小时格式返回时钟上可以显示的最大时间。
例如:a=9、b=4、c=3、d=1,将产生 19:43
到目前为止,我只能想出一种暴力方法来测试所有 24 种可能的组合。虽然这还不错,但我想知道是否有更优雅的方法。欢迎所有比暴力更好的想法。
注意:这不是家庭作业问题。我从面试准备网站得到了这个,但那里没有解决方案。
生成所有 24 种排列可以,但您不必这样做。对蛮力方法的验证将要求您验证每个数字,并且您也可以在验证每个数字时构建排列。从大数字开始。
- 将数字按高位 -> 低位排序
-
迭代每个数字 [i] 并搜索列表,直到找到符合要求的最大数字。
[0] 必须
如果 [0]==2,[1] 必须
[2] 必须
[3] 可以是任何东西
从列表中删除该数字,并将其放在位置 [i]
对每个数字重复
每个条件都可以表示为列表中的 lambda 函数,从而可以轻松地将搜索循环与条件分开。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)