自学内容网 自学内容网

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


原文地址:https://blog.csdn.net/UZDW_/article/details/142736776

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!