题解 | # java 加起来和为目标值的组合#

加起来和为目标值的组合

http://www.nowcoder.com/practice/172e6420abf84c11840ed6b36a48f8cd

回溯,nums排序后,当sum+nums[i]>target时提前结束递归。



public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param target int整型 
     * @param nums int整型一维数组 
     * @return int整型ArrayList<ArrayList<>>
     */
    ArrayList<ArrayList<Integer>> ans=new ArrayList<>();//保存结果
    Deque<Integer> path=new LinkedList<>();//保存单条路径答案
    
    public void helper(int target,int[] nums,int sum,int start){
        if(target==sum){
            ans.add(new ArrayList<>(path));
            return ;
        }
        
        for(int i=start;i<nums.length;i++){
            //剪枝,结果和已经大于目标值,无需下一轮递归
            if(sum+nums[i]>target) break;
            
            path.addLast(nums[i]);
            sum=sum+nums[i];
            helper(target,nums,sum,i);
            sum=sum-nums[i];//回溯
            path.removeLast();//回溯
        }
    }
    
    public ArrayList<ArrayList<Integer>> combinationCount (int target, int[] nums) {
        // write code here
        if(nums.length==0) return ans;
        Arrays.sort(nums);//排序后便于剪枝
        
        helper(target,nums,0,0);
        return ans;
    }
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 一张图晒出你司的标语 #
4251次浏览 75人参与
# AI面会问哪些问题? #
27505次浏览 550人参与
# 厦门银行科技岗值不值得投 #
7938次浏览 188人参与
# 你的实习产出是真实的还是包装的? #
20041次浏览 342人参与
# 找AI工作可以去哪些公司? #
8935次浏览 230人参与
# 春招至今,你的战绩如何? #
64488次浏览 575人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
15086次浏览 221人参与
# 从事AI岗需要掌握哪些技术栈? #
8791次浏览 299人参与
# 你做过最难的笔试是哪家公司 #
33064次浏览 229人参与
# 中国电信笔试 #
31910次浏览 292人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
340695次浏览 2173人参与
# 哪些公司真双非友好? #
69552次浏览 289人参与
# 阿里笔试 #
178352次浏览 1314人参与
# 机械人避雷的岗位/公司 #
62693次浏览 393人参与
# 第一份工作一定要去大厂吗 #
14405次浏览 122人参与
# 金三银四,你的春招进行到哪个阶段了? #
22047次浏览 280人参与
# 为了减少AI幻觉,你注入过哪些设定? #
26231次浏览 310人参与
# 沪漂/北漂你觉得哪个更苦? #
9748次浏览 193人参与
# HR最不可信的一句话是__ #
6151次浏览 113人参与
# 应届生第一份工资要多少合适 #
20663次浏览 86人参与
# AI时代,哪个岗位还有“活路” #
11419次浏览 339人参与
# 春招你拿到offer了吗 #
831079次浏览 9986人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务