698. Partition to K Equal Sum Subsets

来源:互联网 发布:淘宝激活店铺 编辑:程序博客网 时间:2024/06/06 02:09

698. Partition to K Equal Sum Subsets

  • 题目描述:Given an array of integers nums and a positive integer k, find whether it’s possible to divide this array into k non-empty subsets whose sums are all equal.

  • 题目大意:是否能将一个数组分为k个子数组

  • 代码

    package DP;/*** @Author OovEver* @Date 2017/12/16 14:16*/public class LeetCode698 {  public boolean canPartitionKSubsets(int[] nums, int k) {      int sum = 0;      for (int num : nums) {          sum += num;      }      if (k<=0||sum % k != 0) {          return false;      }      int target = sum / k;      int[] visited = new int[nums.length];      return canPartition(nums, visited, 0, k, 0, target);  }  public boolean canPartition(int[] nums, int[] visited, int start_index, int k, int cur_sum, int target) {      if (k == 1) {          return true;      }      if(cur_sum==target) return canPartition(nums, visited, 0, k - 1, 0, target);      for(int i=start_index;i<nums.length;i++) {          if (visited[i] == 0) {              visited[i] = 1;              if (canPartition(nums, visited, i + 1, k, cur_sum + nums[i],  target)) {                  return true;              }              visited[i] = 0;          }      }      return false;  }}
原创粉丝点击