会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132384个问题
JAVA 全系列/第十一阶段:消息中间件与高并发处理/RabbitMQ(旧) 3528楼

react-goodlive-stage4-details.zip

老师,我那个房屋评估价的哪个星星出不来

WEB前端全系列/第十六阶段:React企业级项目/宜居(商城类)高级React实战项目(旧) 3530楼
JAVA 全系列/第十六阶段:前后端分离技术VUE/Vue3 3532楼
Python 全系列/第二阶段:Python 深入与提高/(旧)坦克大战 3535楼
JAVA 全系列/第六阶段:项目管理与SSM框架/SpringMVC 3537楼

l屏幕截图 2023-03-17 211403.png

Python 全系列/第一阶段:Python入门/序列 3538楼
Python 全系列/第十八阶段:数据分析-数据可视化/matplotlib(23旧) 3539楼

老师好,关于remove有如下算法和问题:


题目描述:

https://leetcode.com/problems/combination-sum/



解答:



class Solution {

    public List<List<Integer>> combinationSum(int[] candidates, int target) {

        List<List<Integer>> res= new ArrayList<>();

        helper(res,candidates, target, new ArrayList<>(),0);

        return res;

    }

    private void helper(List<List<Integer>> res, int[] nums, int target, List<Integer> temp, int start){

        if(target==0){

            res.add(new ArrayList<>(temp));

        }else if(target <0) return;

        for(int i=start;i<nums.length; i++){

            temp.add(nums[i]);

            helper(res, nums,target-nums[i], temp, i);

            temp.remove(temp.size()-1);

        }

    }

}



我有两个问题:

1.

14行

            temp.remove(temp.size()-1);

arraylist的remove方法可以输入index的方法,或者直接输入object来找到对应元素,并删除。

这里因为temp内本身往里面add的元素,也是integer,所以我不太懂,为什么在这里remove时,java会判定是按照index去remove(即remove掉最后一个元素),而不是去找temp.size()-1 对应的value,去remove temp里的元素呢?



2.

11行,

 for(int i=start;i<nums.length; i++){


这里我一开始写成 int i =0; 

我觉得虽然方法内部写错了,但算法本身应该没错,因为在第四行调用函数时,

helper(res,candidates, target, new ArrayList<>(),0);

start的初始值就是给的0,所以我觉得应该这里写int =0 也不会有错,但是程序结果有错,


当 int=0

输入:

[2,3,6,7]
7

输出为:

[[2,2,3],[2,3,2],[3,2,2],[7]]



但是改成int i= start后,输出为

[[2,2,3],[7]]

为正确结果。


我没搞懂为什么会出现这个差异?






JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 3540楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637