算法----火柴拼正方形
题目
你将得到一个整数数组 matchsticks ,其中 matchsticks[i] 是第 i 个火柴棒的长度。你要用 所有的火柴棍 拼成一个正方形。你 不能折断 任何一根火柴棒,但你可以把它们连在一起,而且每根火柴棒必须 使用一次 。
如果你能使这个正方形,则返回 true ,否则返回 false 。
示例 1:
输入: matchsticks = [1,1,2,2,2]
输出: true
解释: 能拼成一个边长为2的正方形,每边两根火柴。
示例 2:
输入: matchsticks = [3,3,3,3,4]
输出: false
解释: 不能用所有火柴拼成一个正方形。
提示:
1 <= matchsticks.length <= 15
1 <= matchsticks[i] <= 108
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/matchsticks-to-square
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解决方法
fun makesquare(matchsticks: IntArray): Boolean {val sum = matchsticks.sum()if (sum % 4 != 0) {return false}val edges = IntArray(4) { 0 }//为什么逆序排了一下 效率这么高?matchsticks.sortDescending()return dfs(0, matchsticks, edges, sum / 4)}private fun dfs(index: Int, matchsticks: IntArray, edges: IntArray, length: Int): Boolean {if (index == matchsticks.size) {return true}for (i in 0..3) {if (edges[i] + matchsticks[index] > length) {continue}edges[i] += matchsticks[index]if (dfs(index + 1, matchsticks, edges, length)) {return true}edges[i] -= matchsticks[index]}return false}
总结
1.算法就是把不同的问题,转换成熟悉的模型去解决。要学会数学归纳
2.DFS真的是一个必须掌握的
3.日子一天一天过,没有特别精彩,也没有特别难过
算法----火柴拼正方形相关推荐
- 经典回溯之火柴拼正方形
473. 火柴拼正方形 给定很多小短火柴,拼成一个正方形 用到的技巧 1. 排序,传参数,起到剪枝的效果,排序后前面搜索过的在下层时直接跳过,具体体现为 for (int i = idx;i< ...
- LeetCode 473. 火柴拼正方形
473. 火柴拼正方形 还记得童话<卖火柴的小女孩>吗?现在,你知道小女孩有多少根火柴,请找出一种能使用所有火柴拼成一个正方形的方法.不能折断火柴,可以把火柴连接起来,并且每根火柴都要用到 ...
- LeetCode473. 火柴拼正方形
目录 文章目录 一.题目 二.解题思路 三.知识总结 1.C++ sort()排序函数用法详解 2.accumulate()函数 总结 一.题目 你将得到一个整数数组 matchsticks ,其中 ...
- 【473. 火柴拼正方形】
来源:力扣(LeetCode) 描述 你将得到一个整数数组 matchsticks ,其中 matchsticks[i] 是第 i 个火柴棒的长度.你要用 所有的火柴棍 拼成一个正方形.你 不能折断 ...
- LeetCode 473. 火柴拼正方形(回溯)
文章目录 1. 题目 2. 解题 1. 题目 还记得童话<卖火柴的小女孩>吗?现在,你知道小女孩有多少根火柴,请找出一种能使用所有火柴拼成一个正方形的方法. 不能折断火柴,可以把火柴连接起 ...
- 473. 火柴拼正方形
还记得童话<卖火柴的小女孩>吗?现在,你知道小女孩有多少根火柴,请找出一种能使用所有火柴拼成一个正方形的方法.不能折断火柴,可以把火柴连接起来,并且每根火柴都要用到. 输入为小女孩拥有火柴 ...
- [Swift]LeetCode473. 火柴拼正方形 | Matchsticks to Square
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- 【Leetcode刷题Python】473. 火柴拼正方形
1 题目 你将得到一个整数数组 matchsticks ,其中 matchsticks[i] 是第 i 个火柴棒的长度.你要用 所有的火柴棍 拼成一个正方形.你 不能折断 任何一根火柴棒,但你可以把它 ...
- 贪心算法 | 473火柴拼正方形 怎么用C++实现摆放火柴棍?
题目 已知一个数组,保存了n个(n<=15)火柴棍,问可否使用这n个火柴棍摆成一个正方形? 例如:[1,1,2,2,2] --true 2 求解 思路 num[i] :第i条火柴棍 bucke ...
最新文章
- 在XP SP3中启用支持NLA的远程桌面
- oracle自治事务的写法_Oracle的自治事务
- Reporting Service 钻取
- scrapy-redis mysql_Scrapy-redis 分布式
- jQuery中的text()、html()和val()以及innerText、innerHTML和value
- Unity优化之GC——合理优化Unity的GC (难度3 推荐5)
- 语言统计学中的几个定律,可作为设计检索的参考
- wordpress汉化技巧_保护您的WordPress网站的6个技巧
- ps 如何增加 填充图案
- java对mysql进行查找替换_Java对MySQL数据库进行连接、查询和修改【转载】
- 松下伺服驱动器A4系列图纸
- csapp--键盘驱动程序的分析与修改
- PWM的基本原理及应用实例
- 3GPP 5G 常用协议规范下载整理
- flask实现浏览器实时视频播放
- 【历史上的今天】12 月 20 日:苹果收购 NeXT;苏联超级计算机先驱诞生;《绝地求生》发布
- 实现支付宝AR扫描动画效果
- 通过快递鸟如何接入中通快递电子面单
- 过滤敏感词汇(trie树实现敏感词过滤)
- Material UI 带复选框表格获取选中值(索引)
热门文章
- css的white-space属性:normal,nowrap,pre,pre-line和pre-wrap的区别?
- QT操作Word汇总
- shell两行输出为一行
- 美的楼宇科技荆州工厂正式投产;华为加入国际电联P2C数字联盟 | 美通企业日报...
- 闽南师范大学计算机科学学院副书记,CCF闽南师范大学学生分会完成换届
- surface pro4 win10下安装elementray os双系统教程
- android-studio推荐模拟器,Android studio 三大模拟器比较,强烈推荐第三种
- 有什么高效的Windows笔记软件?3款优秀的笔记软件推荐!
- 社群运营岗位部门团队KPI绩效sop工作流程计划方案
- Micro LED将引领小间距显示的未来。