473.火柴拼正方形
还记得童话《卖火柴的小女孩》吗?现在,你知道小女孩有多少根火柴,请找出一种能使用所有火柴拼成一个正方形的方法。不能折断火柴,可以把火柴连接起来,并且每根火柴都要用到。
输入为小女孩拥有火柴的数目,每根火柴用其长度表示。输出即为是否能用所有的火柴拼成正方形。
示例 1:
输入: [1,1,2,2,2] 输出: true 解释: 能拼成一个边长为2的正方形,每边两根火柴。
示例 2:
输入: [3,3,3,3,4] 输出: false 解释: 不能用所有火柴拼成一个正方形。
注意:
- 给定的火柴长度和在
0
到10^9
之间。 - 火柴数组的长度不超过15。
class Solution {
public:
bool makesquare(vector<int>& nums) {
if (nums.empty() || nums.size() < 4) return false;
int sum = accumulate(nums.begin(), nums.end(), 0);
if (sum % 4 != 0) return false;
vector<int> sums(4, 0);
sort(nums.rbegin(), nums.rend());
return helper(nums, sums, 0, sum / 4);
}
bool helper(vector<int>& nums, vector<int>& sums, int pos, int target) {
if (pos >= nums.size()) {
return sums[0] == target && sums[1] == target && sums[2] == target;
}
for (int i = 0; i < 4; ++i) {
if (sums[i] + nums[pos] > target) continue;
sums[i] += nums[pos];
if (helper(nums, sums, pos + 1, target)) return true;
sums[i] -= nums[pos];
}
return false;
}
};
473.火柴拼正方形相关推荐
- LeetCode 473. 火柴拼正方形
473. 火柴拼正方形 还记得童话<卖火柴的小女孩>吗?现在,你知道小女孩有多少根火柴,请找出一种能使用所有火柴拼成一个正方形的方法.不能折断火柴,可以把火柴连接起来,并且每根火柴都要用到 ...
- LeetCode 473. 火柴拼正方形(回溯)
文章目录 1. 题目 2. 解题 1. 题目 还记得童话<卖火柴的小女孩>吗?现在,你知道小女孩有多少根火柴,请找出一种能使用所有火柴拼成一个正方形的方法. 不能折断火柴,可以把火柴连接起 ...
- 473. 火柴拼正方形
还记得童话<卖火柴的小女孩>吗?现在,你知道小女孩有多少根火柴,请找出一种能使用所有火柴拼成一个正方形的方法.不能折断火柴,可以把火柴连接起来,并且每根火柴都要用到. 输入为小女孩拥有火柴 ...
- 【Leetcode刷题Python】473. 火柴拼正方形
1 题目 你将得到一个整数数组 matchsticks ,其中 matchsticks[i] 是第 i 个火柴棒的长度.你要用 所有的火柴棍 拼成一个正方形.你 不能折断 任何一根火柴棒,但你可以把它 ...
- 【473. 火柴拼正方形】
来源:力扣(LeetCode) 描述 你将得到一个整数数组 matchsticks ,其中 matchsticks[i] 是第 i 个火柴棒的长度.你要用 所有的火柴棍 拼成一个正方形.你 不能折断 ...
- 贪心算法 | 473火柴拼正方形 怎么用C++实现摆放火柴棍?
题目 已知一个数组,保存了n个(n<=15)火柴棍,问可否使用这n个火柴棍摆成一个正方形? 例如:[1,1,2,2,2] --true 2 求解 思路 num[i] :第i条火柴棍 bucke ...
- leetcode 473. Matchsticks to Square | 473. 火柴拼正方形(递归)
题目 https://leetcode.com/problems/matchsticks-to-square/ 题解 看了 hint 之后,才有思路. 讨论区有个人说得好: This solution ...
- 经典回溯之火柴拼正方形
473. 火柴拼正方形 给定很多小短火柴,拼成一个正方形 用到的技巧 1. 排序,传参数,起到剪枝的效果,排序后前面搜索过的在下层时直接跳过,具体体现为 for (int i = idx;i< ...
- 算法----火柴拼正方形
题目 你将得到一个整数数组 matchsticks ,其中 matchsticks[i] 是第 i 个火柴棒的长度.你要用 所有的火柴棍 拼成一个正方形.你 不能折断 任何一根火柴棒,但你可以把它们连 ...
- [Swift]LeetCode473. 火柴拼正方形 | Matchsticks to Square
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
最新文章
- 素材诊断分析助手_短视频运营必备的8款数据分析工具
- Discuz学习总结——部分bug解决方案
- Oracle 不使用DBCA在Oracle 11中删除数据库
- mac android studio 打不开adb,Android-Macbook ADB无法打开
- oracle中 rownum与rowid的理
- Anchor-free新思路,统一目标检测、实例分割、姿态估计三种任务
- 配置linux定时任务没跑,Linux配置定时任务
- re 模块, 正则表达式 \w+\d+ 的重复问题引发的题目解析
- PHP合并2个数字键数组的值
- 变电站计算机监控 规范,110kV变电站计算机监控系统技术规范书.docx
- 除了UL认证,开拓美国市场必备认证有哪些?
- MI(mutal information)and Entropy
- 板邓:php+mayql分页原理及案例
- Ansible 进阶 (1) inventory
- HTML嵌套注释、多行注释、多级注释,提高生产力
- 软件版本命名规范详解
- 【Oracle篇】Oracle的客户端工具
- 映客都是互刷礼物吗_一姐负气出走花椒,映客正在发生一场大规模主播内讧事件.........
- [30期] 个人职业规划
- 关于 MDD(度量驱动开发)的一些思考