[Leetcode][第679题][JAVA][24点游戏][回溯][暴力]

【问题描述】[困难]

在这里插入图片描述

【解答思路】

回溯

在这里插入图片描述

时间复杂度:O(1) 空间复杂度:O(1)

class Solution {static final int TARGET = 24;static final double EPSILON = 1e-6;static final int ADD= 0,MULTIPLY=1,SUBTRACT = 2,DIVIDE= 3;public boolean judgePoint24(int[] nums) {List<Double> list = new ArrayList<Double>();for(int num:nums){list.add((double) num);}return solve(list);}public boolean solve(List<Double> list) {// list空,没有可计算的,证明无解if (list.size() == 0) {return false;}if(list.size() == 1){// le-6是浮点计算的精度误差,这里判断误差小于1e-6,这样就是正确结果return Math.abs(list.get(0) - TARGET)< EPSILON;}// k的四种计算情况int size = list.size();// 性能优化,当k<2时,对于+ or *不考虑顺序,// 所以k<2 时,j > i与i > j的结果相同,所以有部分不用考虑for(int i=0;i<size;i++){for(int j=0;j<size;j++){if(i!=j){List<Double> list2 = new ArrayList<Double>();for(int k =0;k<size;k++){if(k!=i && k!=j){list2.add(list.get(k));}}for(int k=0;k<4 ;k++){if(k<2 && i>j){continue;}if(k==ADD){list2.add(list.get(i)+list.get(j));} else if (k == MULTIPLY) {list2.add(list.get(i) * list.get(j));} else if (k == SUBTRACT) {list2.add(list.get(i) - list.get(j));} else if (k == DIVIDE) {// 避免除数为0if(Math.abs(list.get(j))<EPSILON){continue;}else{list2.add(list.get(i) /list.get(j));}}// 在这次计算后,判断剩下的元素是否符合要求// 每次缩小计算范围if(solve(list2)){return true;}// 移除最后一个计算结果,因为最后的记过不满足要求// 就是一种回溯方法,将前面添加的结果删除list2.remove(list2.size()-1);}}}}return false;}
}

【总结】

1. 24点 回溯暴力解决 套娃 回溯 9216种可能
2.细节

static final double EPSILON = 1e-6; // 1x10^(-6) 用来抵消浮点运算中因为误差造成的相等无法判断的情况。

转载:https://leetcode-cn.com/problems/24-game/solution/24-dian-you-xi-by-leetcode-solution/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/424891.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第二十七期:网络爬虫程序员被抓,我们还敢爬虫吗?细数那些Java爬虫技术

最近&#xff0c;某大数据科技公司因为涉嫌非法抓取某招聘网站用户的简历信息&#xff0c;公司被查封&#xff0c;负责编写抓取程序的程序员也将面临坐牢。 作者&#xff1a;架构之路来源 最近&#xff0c;某大数据科技公司因为涉嫌非法抓取某招聘网站用户的简历信息&#xff…

文本搜索系统的评估

说明&#xff1a;文章内容来源于课程视频和课程ppt。我只学习了课程没有做习题。文章不是翻译&#xff0c;是我对课程的理解。  这部分本应该继续说反馈(FeedBack)的。但是课程中安排的是评估(Evaluation)。评估是用于衡量搜索引擎质量的。反馈是为了提高搜索引擎质量而进行的…

UE3客户端服务器GamePlay框架

客户端(当前玩家)与服务器对应关系图&#xff1a; 整体上看&#xff0c;UE3的GamePlay框架使用的是MVC架构 ① 橙色的Actor对象及橙色箭头相连的成员变量只会被同步给Owner客户端 Controller&#xff1a;控制器&#xff0c;包括PlayerController和AIController InventoryManage…

[Leetcode][第201题][JAVA][数字范围按位与][位运算][Brian Kernighan]

【问题描述】[中等] 【解答思路】 1. 暴力 逐位与 &#xff0c;只需要判断i 0 或 i 2147483647 的话&#xff0c;就跳出 for 循环即可。 时间复杂度&#xff1a;O(N) 空间复杂度&#xff1a;O(1) public int rangeBitwiseAnd(int m, int n) {//m 要赋值给 i&#xff0c;所…

文档排序模型--查询似然Query Likelihood

在概率模型中&#xff0c;我们定义排序函数是基于文档与查询之间的相关度、可能性来做的。f(d,q) p(R1|d,q), R ∈{0,1}。概率模型有几个小分类&#xff1a;   经典概率模型——>BM25   语言模型Language Model —–>Query Likelihood   Divergence from rando…

第五十二期:甲骨文遭遇“中年危机”:继阿里后,再被亚马逊永久抛弃

42岁的甲骨文迎来“中年危机”。10月15日&#xff0c;亚马逊AWS技术布道者Jeff Barr在AWS官网宣布亚马逊消费者业务永久弃用甲骨文(Oracle)数据库。 作者&#xff1a;温暖来源&#xff1a;镁客网 42岁的甲骨文迎来“中年危机”。 10月15日&#xff0c;亚马逊AWS技术布道者Jef…

[Leetcode][第461题][JAVA][汉明距离][位运算][Brian Kernighan]

【问题描述】[简单] 【解答思路】 1. 内置位计数功能 时间复杂度&#xff1a;O(1) 空间复杂度&#xff1a;O(1) class Solution {public int hammingDistance(int x, int y) {return Integer.bitCount(x ^ y); } }2. 移位 时间复杂度&#xff1a;O(1) 空间复杂度&#xff1…

第二十八期:Notepad++ 新 Logo 出炉,官网全新改版采用自适应设计

Notepad 的推特帐号发布了关于 notepad 的消息。与旧版 Logo 相比&#xff0c;新 Logo 整体的变化不大&#xff0c;不过官方则表示新版 Logo 比旧版的更吸引人&#xff0c;也更加简洁且更具意义。 新旧 Logo 对比如下&#xff08;左边为旧版 Logo&#xff09;&#xff1a; 除了…

React Navigation 导航栏样式调整+底部角标消息提示

五一佳节匆匆而过&#xff0c;有人选择在外面看人山人海&#xff0c;有人选择宅在家中度过五一&#xff0c;也有人依然坚守在第一线&#xff0c;致敬&#xff01; 这是坚持学习react-native的第二篇文章&#xff0c;可能会迟到&#xff0c;但是绝不会缺席&#xff0c;这篇要涉及…

反馈(Feedback)

说明&#xff1a;文章内容来源于课程视频和课程ppt。我只学习了课程没有做习题。文章不是翻译&#xff0c;是我对课程的理解。  终于到了第四部分了。之前提到过的&#xff0c;一个文本检索系统分词索引打分反馈。前面三部分都已经在前面的文档中介绍了。现在看反馈。反馈是根…

【数据结构与算法】堆

一&#xff1a;如何理解“堆” 1&#xff0c;堆是一个完全二叉树&#xff1b; 完全二叉树要求除了最后一层&#xff0c;其他层的节点都是满的&#xff0c;最后一层的节点都靠左排列。 2&#xff0c;堆中每个节点都必须大于等于&#xff08;或小于等于&#xff09;其子树中每个…

第五十三期:资深技术Leader肺腑忠告:如何成为技术大牛?

这篇文章&#xff0c;对于每一个想成为技术大牛的人来说都值得仔细阅读好几遍。 作者&#xff1a;曹乐来源&#xff1a;再成长一次 图片来自 Pexels 双生说&#xff1a;曹乐是典型学霸&#xff0c;清华本硕&#xff0c;多年互联网大厂研发经验&#xff0c;所以“资深”。我刚…

互联网搜索引擎

说明&#xff1a;文章内容来源于课程视频和课程ppt。我只学习了课程没有做习题。文章不是翻译&#xff0c;是我对课程的理解。 1 挑战 互联网搜索引擎与一般搜索引擎的区别主要在以下问题。  第一是数据量(scalability)。互联网搜索需要处理的数据量大&#xff0c;如何保证能…

第五十四期:Libra盟友纷纷“跳船”,联盟链还有戏吗?

曾经被诺贝尔奖得主斯蒂格利茨评价为“傻子才信”的Facebook数字加密货币项目Libra&#xff0c;自从出世开始就负面不断。最近在其首届理事会议前夕&#xff0c;PayPal、Visa、万事达、Stripe和eBay等全球型金融巨头“盟友”的相继退出&#xff0c;更使其遭遇了不少“看空”。 …

python time模块

时间戳、结构化时间、字符串时间 import time#时间戳 &#xff0c;大多时候用于计算 #从1970年0点0分0秒开始计算的秒数 print(time.time())#结构化时间------当地时间&#xff08;东8区&#xff09; #返回一个时间对象 print(time.localtime())#time.localtime()中默认参数为…

第五十五期:区块链将在2020年实现的重大改变

科技界的每家公司都已经拥有区块链战略。如果他们现在没有&#xff0c;他们就有可能错过了这个时代的一个机会。在过去几年中&#xff0c;许多企业已经对整体采用区块链技术的好处和相关风险进行了估算&#xff0c;分析和讨论。 科技界的每家公司都已经拥有区块链战略。如果他们…

为什么机器学习算法要与人类水平比较

原因 1 近年来机器学习的效果越来越好&#xff0c;能够和人类的相应能力做比较。 2 设计和构建机器学习系统&#xff0c;这个工作流程很高效。 因为种种原因&#xff0c;ML或者人都不可能超过Bayes Optimal Error 贝叶斯最优误差&#xff0c;ML随着时间推移会越来越接近贝…

第二十九期:运维之三大监控对比

Zabbix核心组件主要是Agent和Server&#xff0c;其中Agent主要负责采集数据并通过主动或者被动的方式采集数据发送到Server/Proxy&#xff0c;除此之外&#xff0c;为了扩展监控项&#xff0c;Agent还支持执行自定义脚本。 作者&#xff1a;艺术生的运维路来源&#xff1a;今日…

[Leetcode][第459题][JAVA][重复的字符串][子串][匹配]

【问题描述】[中等] 【解答思路】 1. 枚举 找出能整除的子串长度&#xff0c;再用substring遍历匹配即可 时间复杂度&#xff1a;O(N^2) 空间复杂度&#xff1a;O(1) class Solution {public boolean repeatedSubstringPattern(String s) {int len s.length();for(int i 1…

第五十六期:百度CTO王海峰CNCC2019演讲:深度学习平台支撑产业智能化

百度CTO王海峰在会上发表题为《深度学习平台支撑产业智能化》的演讲&#xff0c;分享了百度关于深度学习技术推动人工智能发展及产业化应用的思考&#xff0c;并深度解读百度飞桨深度学习平台的优势&#xff0c;以及与百度智能云结合助力产业智能化的成果。 作者&#xff1a;佚…