遞迴:698、劃分為k個相等的子集
思路:遞迴搜尋所有子集
class Solution {
public boolean search(int[] groups,int row,int[] nums,int target){
//遞迴結束條件
if(row<0) return true;
int v=nums[row--];
for(int i=0;i<groups.length;i++){
if(groups[i]+v<=target){
//選擇元素
groups[i]+=v;
//所有元素使用完,且每一組和小於等於target,返回true
if(search(groups,row,nums,target)) return true;
//撤銷選擇
groups[i]-=v;
}
//剪枝,為空時結束迴圈
if(groups[i]==0) break;
}
return false;
}
public boolean canPartitionKSubsets(int[] nums, int k) {
//求和
int sum=Arrays.stream(nums).sum();
if(sum%k>0) return false;
int target=sum/k;
Arrays.sort(nums);
int row=nums.length-1;
if(nums[row]>target) return false;
//直接等於target的元素不參與搜尋
while(nums[row]==target){
row--;
k--;
}
return search(new int[k],row,nums,target);
}
}
相關文章
- 遞迴 | 第k個語法符號(Python)遞迴符號Python
- python-動態規劃的遞迴、非遞迴實現Python動態規劃遞迴
- LeetCode 90 | 經典遞迴問題,求出所有不重複的子集IILeetCode遞迴
- 尤拉計劃698:123數
- 【遞迴打卡1】在兩個長度相等的排序陣列中找到上中位數遞迴排序陣列
- 分治與遞迴-找k個臨近中位數的數遞迴
- 遞迴和非遞迴分別實現求n的階乘遞迴
- 【遞迴打卡2】求兩個有序陣列的第K小數遞迴陣列
- 遞迴、分治和動態規劃遞迴動態規劃
- 二分法的簡單實現——-遞迴和非遞迴遞迴
- ThinkPHP 無線遞迴分類PHP遞迴
- 為了效能,慎用遞迴遞迴
- 為什麼你學不會遞迴?刷題幾個月,告別遞迴,談談我的經驗遞迴
- 這個遞迴不太難遞迴
- 遞迴、迭代和動態規劃:以九宮格鍵盤為例遞迴動態規劃
- 遞迴和尾遞迴遞迴
- 什麼是遞迴?遞迴和迴圈的異同遞迴
- 快速排序【遞迴】【非遞迴】排序遞迴
- python遞迴(一分鐘讀懂)Python遞迴
- 遞迴樹形查詢所有分類遞迴
- 0 遞迴求最大值 (100分)遞迴
- 遞迴-M--二分查詢遞迴
- 哪位大師能用匿名遞迴下這個無限極分類?遞迴
- 一文學懂遞迴和動態規劃遞迴動態規劃
- 演算法基礎--遞迴和動態規劃演算法遞迴動態規劃
- python 遞迴和二分法Python遞迴
- 遞迴遞迴
- 將maven專案劃分為多個模組Maven
- php 無限分類遞迴 和 無限分類引入 的效能差距PHP遞迴
- 徹底理解遞迴,從遞迴的本質說起!遞迴
- java 兩個列表的元素是否相等且各自元素數量相等Java
- 為什麼你學不會遞迴?告別遞迴,談談我的一些經驗遞迴
- 函式的遞迴函式遞迴
- JavaScript中的遞迴JavaScript遞迴
- 關於“列舉{0,1,...,n-1}所包含的所有大小為k的子集”的理解
- Vue一個案例引發的遞迴元件的使用Vue遞迴元件
- 求解一個陣列的所有子集陣列
- 看動畫輕鬆理解「遞迴」與「動態規劃」動畫遞迴動態規劃