当前位置: 首页 > ai >正文

Leetcode 3670. Maximum Product of Two Integers With No Common Bits

  • Leetcode 3670. Maximum Product of Two Integers With No Common Bits
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3670. Maximum Product of Two Integers With No Common Bits

1. 解题思路

这一题我的思路挺暴力的,就是先构造一个trie树,然后搜索对任意nnn的最大的补数,然后考察所有结果的最大值。

然后直接的实现出现了超时的问题,因此我做了不少剪枝修补,感觉不是最好的实现方法,有兴趣的读者建议还是再想想有没有什么更好的解法吧……

2. 代码实现

给出python代码实现如下:

DIGIT_NUM = 20class Trie:def __init__(self):self.trie = {}def add(self, num):word = bin(num)[2:].rjust(DIGIT_NUM, "0")trie = self.triefor c in word:trie = trie.setdefault(c, {})trie["eos"] = num@lru_cache(None)def find(self, num):word = bin(num)[2:].rjust(DIGIT_NUM, "0")trie = self.triedef dfs(idx, trie):if idx == DIGIT_NUM:return trie.get("eos", 0)if trie == {}:return 0if word[idx] == "1":return dfs(idx+1, trie["0"]) if "0" in trie else 0else:return max(dfs(idx+1, trie.get("0", {})), dfs(idx+1, trie.get("1", {})))return dfs(0, trie)@lru_cache(None)
def get_rev(num):num = bin(num)[2:]digits = [1-int(x) for x in num]ans = 0for d in digits:ans = 2*ans+dreturn ansclass Solution:def maxProduct(self, nums: List[int]) -> int:snums = set(nums)nums = list(snums)trie = Trie()for num in nums:trie.add(num)nums = sorted(nums, reverse=True)ans = 0for num in nums:rev = get_rev(num)if num * num <= ans:breakif get_rev(num) in snums:ans = max(ans, num * get_rev(num))continueans = max(ans, num * trie.find(num))return ans

提交代码评测得到:耗时16912ms,占用内存319.43MB。

http://www.xdnf.cn/news/19661.html

相关文章:

  • HTML第四课:个人简介页面开发
  • 下载速度爆表,全平台通用,免费拿走!
  • DaemonSet Job CronJob 概念理解
  • XML在线格式化 - 加菲工具
  • Leetcode二分查找(3)
  • 移动硬盘删除东西后,没有释放空间
  • 【机器学习入门】5.2 回归的起源——从身高遗传到线性模型的百年演变
  • 狄利克雷分布作用
  • CentOS 创建站点
  • 二进制流进行预览pdf、excel、docx
  • Cisco FMC利用sftp Server拷贝文件方法
  • 0902 C++类的匿名对象
  • 面试问题:c++的内存管理方式,delete的使用,vector的resize和reverse,容量拓展
  • uni-app 布局之 Flex
  • 基于STM32与华为云联动的智能电动车充电桩管理系统
  • QSlider 和 QProgressBar 的区别与实践
  • 【Linux基础】Linux系统启动:深入解析Linux系统启动完整流程
  • 仿真波导中超短脉冲传输中的各种非线性效应所产生的超连续谱
  • AI如何理解PDF中的表格和图片?
  • qt安装FFmpeg后编译遇到error: collect2.exe: error: ld returned 1 exit status错误
  • 链表题类型注解解惑:理解Optional,理解ListNode
  • 数据结构--跳表(Skip List)
  • 【学Python自动化】 7. Python 输入与输出学习笔记
  • kaggle中的2D目标检测训练trick总结
  • 用了企业微信 AI 半年,这 5 个功能让我彻底告别重复劳动
  • 一文带你入门 AT 指令集:从串口通信到模块控制
  • 【智能体开发】怎样提升AI智能体的运行速度?
  • 实验2-代理模式和观察者模式设计
  • C++全局变量未初始的和已初始化的位置放在哪里?
  • C语言————实战项目“扫雷游戏”(完整代码)