LeetCode No.23 火柴拼正方形

1.LeetCode473題目鏈接

https://leetcode-cn.com/problems/matchsticks-to-square/submissions/

2.解題思路

首先我們將不能組成正方形的結(jié)果去除,邊長不能整除4的,然后記錄正方形變長,遞歸累加到每個(gè)邊等于變長,若可以得到四條邊則為true。

 public boolean makesquare(int[] nums) {
        int sum = 0;
        for (int num : nums) {
            sum += num;
        }
        if (sum == 0 || sum % 4 != 0) {
            return false;
        }
        int target = sum / 4;
        for (int num : nums) {
            if (num > target) {
                return false;
            }
        }
        //群里同學(xué)說現(xiàn)排序效率更高,試了下,提高了40%的效率。。
        Arrays.sort(nums);
        search(nums.length - 1, nums, target, new int[4]);
        return ans;

    }

    boolean ans = false;

    void search(int cur, int[] nums, int target, int[] temp) {
        if (ans){
            return;
        }
        if (cur == -1) {
            for (int num : temp) {
                if (num != target)
                    return;
            }
            ans = true;
            return;
        }
        for (int i = 0; i < temp.length; i++) {
            int last = temp[i];
            temp[i] += nums[cur];
            if (temp[i] <= target) {
                search(cur - 1, nums, target, temp);
            }
            temp[i] = last;
        }
    }
image
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容