关于临时变量

剑指Offer23题:

package Offer;

import java.util.ArrayList;

public class Offer23_FindPath {
    ArrayList<Integer> list = new ArrayList<>();
    ArrayList<ArrayList<Integer>> result = new ArrayList<>();
    public static void main(String[] args){
        TreeNode t1 = new TreeNode(10);
        TreeNode t2 = new TreeNode(5);
        TreeNode t3 = new TreeNode(12);
        TreeNode t4 = new TreeNode(4);
        TreeNode t5 = new TreeNode(7);
        t1.addLeft(t1,t2);
        t1.addRight(t1,t3);
        t2.addLeft(t2,t4);
        t2.addRight(t2,t5);

        Offer23_FindPath o1 = new Offer23_FindPath();
        o1.FindPath(t1,22);
    }
    public ArrayList<ArrayList<Integer>> FindPath(TreeNode root, int target) {
        if (root==null){
            return result;
        }
        list.add(root.val);
        target-=root.val;
        if (target==0 && root.right==null && root.left==null){
            result.add(new ArrayList<Integer>(list));
          //  result.add(list);
        }
        FindPath(root.left,target);
        FindPath(root.right,target);
        list.remove(list.size()-1);
        return result;

    }
    
}

对于以下这两句代码:

result.add(new ArrayList<Integer>(list));
result.add(list);

第一种写法,在堆中新建了一个新的ArrayList,原来的list中的值改变后,result中的值不变。
第二种写法,原来的list中的值改变后,result中的值也会改变。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在一个方法内部定义的变量都存储在栈中,当这个函数运行结束后,其对应的栈就会被回收,此时,在其方法体中定义的变量将不...
    Y了个J阅读 9,931评论 1 14
  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 10,259评论 1 114
  • 一、职场铁律: 1、公司的问题,是你改善的机会。 2、客户的问题,是你提供服务的机会。 3、职场,就是让解决问题的...
    A张国辉阅读 3,038评论 0 0
  • 青春,总是那么艰涩。处在青春的我们,内心总是那么地纯粹。或许,多年以后,这种纯粹的美好,仍然会让我们会心一笑吧! ...
    GY为公阅读 3,290评论 0 0
  • 水石轩主人阅读 1,108评论 0 0

友情链接更多精彩内容