473. Matchsticks to Square
Question
You are given an integer array matchsticks where matchsticks[i] is the length of the ith matchstick. You want to use all the matchsticks to make one square. You should not break any stick, but you can link them up, and each matchstick must be used exactly one time.
Return true if you can make this square and false otherwise.
Solution
回溯,用int[] edges记录边长。
先计算所有火柴棍的长度之和是否能被4整除,如果不能则返回false。
将所有火柴排序,以减少回溯时的计算量。
Backtracking 回溯
当遍历越界时(传入index为-1),则返回true。
每次将当前火柴matchsticks[index]添加到一个edges[i]中。
当edges[i] <= sum / 4,且向前回溯前一个位置index-1返回结果为真,则返回true。
然后将当前火柴从edges[i]中取出。
Code
1 | class Solution { |
473. Matchsticks to Square
https://xuanhe95.github.io/2022/07/13/473-Matchsticks-to-Square/