416. Partition Equal Subset Sum

sort之后 看有没有可以等于sum/2的

 

 1 class Solution {
 2     public boolean canPartition(int[] nums) {
 3         if(nums.length == 0) return false;
 4         int sum = 0;
 5         for(int i = 0; i < nums.length; i++){
 6             sum += nums[i];
 7         }
 8         Arrays.sort(nums);
 9         if(nums[nums.length - 1] > sum/2) return false;
10         if(sum % 2 != 0) return false;
11         return dfs(nums, sum/2, nums.length-1);
12         
13     }
14     
15     public boolean dfs(int[] nums, int target, int start){
16         if(target == 0) return true;
17         if(target < 0) return false;
18         for(int i = start; i >= 0; i--){
19             if(dfs(nums, target - nums[i], i-1)){  //这便是i-1!!
20                 return true;
21             }
22         }
23         return false;
24     }
25     
26 }

 

posted @ 2018-10-30 09:35  jasoncool1  阅读(136)  评论(0编辑  收藏  举报