LeetCode 3309. 连接二进制表示可形成的最大数值
LeetCode 3309. 连接二进制表示可形成的最大数值
给你一个长度为 3 的整数数组 nums。
现以某种顺序 连接 数组 nums 中所有元素的 二进制表示 ,请你返回可以由这种方法形成的 最大 数值。
注意 任何数字的二进制表示 不含 前导零。
示例 1:
输入: nums = [1,2,3]
输出: 30
解释:
按照顺序 [3, 1, 2] 连接数字的二进制表示,得到结果 “11110”,这是 30 的二进制表示。
示例 2:
输入: nums = [2,8,16]
输出: 1296
解释:
按照顺序 [2, 8, 16] 连接数字的二进制表述,得到结果 “10100010000”,这是 1296 的二进制表示。
提示:
nums.length == 3
1 <= nums[i] <= 127
class Solution:
def maxGoodNumber(self, nums: List[int]) -> int:
def calc(a1, a2, a3):
return (
a3
+ (a2 << a3.bit_length())
+ (a1 << (a3.bit_length() + a2.bit_length()))
)
a, b, c = nums
res = 0
for nums in [
[a, b, c],
[a, c, b],
[b, a, c],
[b, c, a],
[c, b, a],
[c, a, b],
]:
res = max(calc(*nums), res)
return res