• leetCode递增子序列


    hi各位大佬,我是小菜鸟。一个数组中的递增子序列可能有多个,那么需要创建一个二维数组或者集合(或者数组集合混用,参考java博文之集合

    这也是一个常见的题,原力扣官方地址见此

    For deep learning QQ Second Group 629530787 

    I'm here waiting for you

    1,再补充一个知识,Integer初始化后不赋值,默认是null,这点与一般的数据类型不同,如下:

    1. int test[]=new int[4];
    2. for (int i:test)
    3. System.out.println(i);
    4. Integer q[]= new Integer[4];
    5. for (Integer j:q)
    6. System.out.println(j);
    7. #分别是404null

     2,集合套集合

    1. Integer p[] = new Integer[]{1,2,3,4};
    2. Integer q[]= new Integer[4];
    3. List>array6=new ArrayList<>(){};
    4. array6.add(Arrays.asList(p));
    5. array6.add(Arrays.asList(q));
    6. System.out.println(array6);
    7. #[[1, 2, 3, 4], [null, null, null, null]]

    3,数组集合

    1. List array5[]=new ArrayList[2];
    2. array5[0]=new ArrayList<>(Arrays.asList(p));
    3. array5[1]=new ArrayList<>(){{Arrays.asList(q);}};
    4. System.out.println(array5[1]);

    数组只能按索引打印,不能一下子打印出所有,而集合可以。

    4,今天的题目:深度有限搜索,枚举所有的情况,然后剪枝。

    1. class Solution {
    2. List temp = new ArrayList();
    3. List> ans = new ArrayList>();
    4. public List> findSubsequences(int[] nums) {
    5. dfs(0, Integer.MIN_VALUE, nums);
    6. return ans;
    7. }
    8. public void dfs(int cur, int last, int[] nums) {
    9. if (cur == nums.length) {
    10. if (temp.size() >= 2) {
    11. ans.add(new ArrayList(temp));
    12. }
    13. return;
    14. }
    15. if (nums[cur] >= last) {
    16. temp.add(nums[cur]);
    17. dfs(cur + 1, nums[cur], nums);
    18. temp.remove(temp.size() - 1);
    19. }
    20. if (nums[cur] != last) {
    21. dfs(cur + 1, last, nums);
    22. }
    23. }
    24. }

    4.1.最小值,最大值

    1. System.out.println(Integer.MIN_VALUE+","+Integer.MAX_VALUE);
    2. -2147483648,2147483647

    就是-2**31和2**31-1

    4.2,ans的add为啥要重新初始化赋值,不初始化结果不对,我试了。

    这个就是深浅复制的问题,如下示例:也可说啥重新开辟了空间,而不是指针(地址啥玩意的)

    1. List> itest=new ArrayList<>();
    2. Listtemp =new ArrayList<>();
    3. temp.add(12);
    4. temp.add(37);
    5. itest.add(temp);
    6. temp.remove(temp.size()-1);
    7. System.out.println(itest);
    8. System.out.println(temp);
    9. #[[12]]
    10. #[12]

    题目中的,如下:类似

    1. List> itest=new ArrayList<>();
    2. Listtemp =new ArrayList<>();
    3. temp.add(12);
    4. temp.add(37);
    5. itest.add(new ArrayList<>(temp));
    6. temp.remove(temp.size()-1);
    7. System.out.println(itest);
    8. System.out.println(temp);
    9. #[[12, 37]]
    10. #[12]

    愿我们终有重逢之时,

    而你还记得我们曾经讨论的话题。

  • 相关阅读:
    Linux性能优化--性能工具:磁盘I/O
    Dart 语法总结
    Mysql事务隔离级别与MVCC(多版本并发控制)
    J015基于AT89C51的十字路口交通灯紧急+夜间
    Scheduled定时任务
    【机器学习】7 ——k近邻算法
    canal安装与客户端使用
    金仓数据库KingbaseES sys_prewarm 扩展
    python 文件操作
    最大的观影时间问题
  • 原文地址:https://blog.csdn.net/SPESEG/article/details/126594691