猫丫 level
获赞
23
粉丝
17
关注
8
看过 TA
10
大连理工
2017
Java
IP属地:北京
暂未填写个人简介
私信
关注
2020-08-18 14:27
大连理工 Java
0 点赞 评论 收藏
分享
2020-08-15 12:23
大连理工 Java
0 点赞 评论 收藏
分享
2020-08-13 23:29
大连理工 Java
0 点赞 评论 收藏
分享
2016-08-07 11:14
大连理工 Java
求数组中和为某个值的所有子数组,比如数组是  [5,5,10,2,3] 一共有四个子数组的和是 15,比如  [5,10], [5,10], [10,2,3], [5,5,2,3]。用递归实现,怎么打印出这些子数组,是用栈实现吗
猫丫:import java.util.ArrayList; import java.util.Arrays; import java.util.Stack; public class subArrayOfgivenValue { public static void main(String[] args) { int[] candidates = { 5, 5, 10, 2, 3 }; int target = 15; ArrayList<ArrayList<Integer>> res = combinationSum(candidates, target); for (ArrayList<Integer> list : res) { System.out.println(list); } } public static ArrayList<ArrayList<Integer>> combinationSum(int[] num, int target) { ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>(); // Arrays.sort(num); Stack<Integer> stk = new Stack<Integer>(); findCombination(result, 0, target, stk, num); return result; } private static void findCombination(ArrayList<ArrayList<Integer>> result, int index,int target, Stack<Integer> stk, int[] num) { if (target == 0) { result.add(new ArrayList<Integer>(stk)); return; } else { for (int i = index; i < num.length; i++) { if (num[i] > target) continue; stk.push(num[i]); findCombination(result, i + 1, target - num[i], stk, num); stk.pop(); } } } }
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客企业服务