当前位置: 首页 > news >正文

Remove和RemoveLast用法

LeetCode 46 全排列

先贴代码

class Solution {List<List<Integer>> result = new ArrayList<>();List<Integer> temp = new ArrayList<>();public List<List<Integer>> permute(int[] nums) {dfs(nums, 0);return result;}public void dfs(int[] nums, int deep) {if(deep == nums.length) {result.add(new ArrayList(temp));return;}for(int i=0;i<nums.length;i++) {if(!temp.contains(nums[i])) {temp.add(nums[i]);deep++;dfs(nums, deep);temp.remove(temp.size()-1);    //LinKedList和ArrayList都可以用该方法//temp.remove(Integer.valueOf(nums[i]));//temp.removeLast();     //仅有LinkedList可用该方法deep--;}}}
}

刷代码随想录回溯算法的时候,经常会想到为什么temp都是用LinkedList的数据结构?

为什么我不能用ArrayList呢?

经过实践证明,ArrayList是可行的

但是有几个注意事项:

1、使用temp.remove(); 删除元素时,要么填入索引值,要么传入对象!而不是nums[i]这个值。

跟add方法是不一样的!

2、ArrayList和LinkedList都有contains()方法和remove()方法

3、即便你使用了ArrayList的数据结构,并不代表你在每次在result添加新的List子表,不用重新new一个ArrayList了,因为List指向的是地址,而不是实际的值,你必须重新new一个ArrayList来保存数据,不然会所有的List子表都会是空。

http://www.lryc.cn/news/181968.html

相关文章:

  • (一) 使用 Hugo 搭建个人博客保姆级教程(上篇)
  • 数据结构之栈
  • wireshark of tshark tools v3.4.0版本 支持json
  • Python开源项目月排行 2023年9月
  • uniapp项目实践总结(二十五)苹果 ios 平台 APP 打包教程
  • MySQL查询(基础到高级)
  • 电脑通过串口助手和51单片机串口通讯
  • 【Linux】线程详解完结篇——信号量 + 线程池 + 单例模式 + 读写锁
  • 弧度、圆弧上的点、圆的半径(r)、弧长(s)之间的关系
  • [AOSP] [JNI] [Android] AOSP中使用JNI
  • GEE案例——如何使用长时序影像实现多波段图像加载(不同层土壤湿度)
  • Cloudflare进阶技巧:缓存利用最大化
  • 想要精通算法和SQL的成长之路 - 二叉树的判断问题(子树判断 | 对称性 | 一致性判断)
  • (零)如何做机器视觉项目
  • 【Leetcode】滑动窗口合集
  • 【C++】STL详解(九)—— set、map、multiset、multimap的介绍及使用
  • 计组—— I/O系统
  • 基于vc6+sdk51开发简易文字识别转语音的程序
  • DevOps:自动化部署和持续集成/持续交付(CI/CD)
  • 专业图标制作软件 Image2icon 最新中文 for mac
  • 数据结构:顺序表
  • 僵尸进程的产生与处理
  • TouchEffects - Android View点击特效
  • 从ContinuousEventTimeTrigger/ContinuousProcessingTimeTrigger代码看如何实现一个自定义的触发器
  • Linux 5种网络模型
  • 10.1 调试事件读取寄存器
  • Linux系统常用指令篇---(一)
  • 【初识Linux】:常见指令(1)
  • STM32复习笔记(四):看门狗
  • 【C++进阶(七)】仿函数深度剖析模板进阶讲解