473. Matchsticks to Square

Remember the story of Little Match Girl? By now, you know exactly what matchsticks the little match girl has, please find out a way you can make one square by using up all those matchsticks. You should not break any stick, but you can link them up, and each matchstick must be used exactly one time.

Your input will be several matchsticks the girl has, represented with their stick length. Your output will either be true or false, to represent whether you could make one square using all the matchsticks the little match girl has.

Example 1:

Input: [1,1,2,2,2]
Output: true

Explanation: You can form a square with length 2, one side of the square came two sticks with length 1.

Example 2:

Input: [3,3,3,3,4]
Output: false

Explanation: You cannot find a way to form a square with all the matchsticks.

Note:

  1. The length sum of the given matchsticks is in the range of 0 to 10^9.
  2. The length of the given matchstick array will not exceed 15.

Subscribe to see which companies asked this question.

递归,dfs

public class Solution {     public boolean makesquare(int[] nums) {         int sum = 0, l = 0;         if (nums.length == 0) {             return false;         }         for (int i = 0; i < nums.length; i++) {             sum += nums[i];         }         if (sum % 4 != 0) {             return false;         }         Arrays.sort(nums);         l = sum / 4;         return helper(0, 0, 0, 0, nums, nums.length - 1, l);     }     public boolean helper(int l1, int l2, int l3, int l4, int[] nums, int end, int l) {         boolean f1 = false, f2 = false, f3 = false, f4 = false;         if (end < 0) {             if (l1 == l && l2 == l && l3 == l && l4 == l) {                 return true;             } else {                 return false;             }         }         int tmp = nums[end];         if (l1 + tmp <= l) {             f1 = helper(l1 + tmp, l2, l3, l4, nums, end - 1, l);         }         if (f1) {             return f1;         }         if (l2 + tmp <= l) {             f2 = helper(l1, l2 + tmp, l3, l4, nums, end - 1, l);         }         if (f2) {             return f2;         }         if (l3 + tmp <= l) {             f3 = helper(l1, l2, l3 + tmp, l4, nums, end - 1, l);         }         if (f3) {             return f3;         }         if (l4 + tmp <= l) {             f4 = helper(l1, l2, l3, l4 + tmp, nums, end - 1, l);         }         return f4;     } }
时间: 2024-07-31 13:26:38

473. Matchsticks to Square的相关文章

LeetCode 473 - Matchsticks to Square - Medium (Python)

Remember the story of Little Match Girl? By now, you know exactly what matchsticks the little match girl has, please find out a way you can make one square by using up all those matchsticks. You should not break any stick, but you can link them up, a

[LeetCode] Matchsticks to Square 火柴棍组成正方形

Remember the story of Little Match Girl? By now, you know exactly what matchsticks the little match girl has, please find out a way you can make one square by using up all those matchsticks. You should not break any stick, but you can link them up, a

Leetcode: Matchsticks to Square &amp;&amp; Grammar: reverse an primative array

Remember the story of Little Match Girl? By now, you know exactly what matchsticks the little match girl has, please find out a way you can make one square by using up all those matchsticks. You should not break any stick, but you can link them up, a

Matchsticks to Square &amp;&amp; Grammar: reverse an primative array

Remember the story of Little Match Girl? By now, you know exactly what matchsticks the little match girl has, please find out a way you can make one square by using up all those matchsticks. You should not break any stick, but you can link them up, a

[Swift]LeetCode473. 火柴拼正方形 | Matchsticks to Square

Remember the story of Little Match Girl? By now, you know exactly what matchsticks the little match girl has, please find out a way you can make one square by using up all those matchsticks. You should not break any stick, but you can link them up, a

过中等难度题目.0310

  .   8  String to Integer (atoi)    13.9% Medium   . 151 Reverse Words in a String      15.7% Medium     . 288 Unique Word Abbreviation      15.8% Medium     . 29 Divide Two Integers      16.0% Medium     . 166 Fraction to Recurring Decimal      17.

继续过中等难度.0309

  .   8  String to Integer (atoi)    13.9% Medium   . 151 Reverse Words in a String      15.7% Medium     . 288 Unique Word Abbreviation      15.8% Medium     . 29 Divide Two Integers      16.0% Medium     . 166 Fraction to Recurring Decimal      17.

LeetCode Problems List 题目汇总

No. Title Level Rate 1 Two Sum Medium 17.70% 2 Add Two Numbers Medium 21.10% 3 Longest Substring Without Repeating Characters Medium 20.60% 4 Median of Two Sorted Arrays Hard 17.40% 5 Longest Palindromic Substring Medium 20.70% 6 ZigZag Conversion Ea

leetcode list

LeetCode 142. Linked List Cycle II LeetCode 148. Sort List LeetCode 146. LRU Cache LeetCode 473. Matchsticks to Square LeetCode 301. Remove Invalid Parentheses LeetCode 331. Verify Preorder Serialization of a Binary Tree 原文地址:https://www.cnblogs.com/