【算法】小点:List.remove

1、List.remove

在写一道简单递归时发现问题:

cur.add(numsi); dfs(nums,cur,res); cur.remove(numsi); 主要是这三行代码,发现出现指针异常。其实问题是:

List的remove方法有两个重载:remove(int index)和remove(Object o)。

在这里,numsi是int类型,所以调用的是remove(int index)方法,它会移除指定索引位置的元素。

如果当前列表cur的大小为size,那么索引范围是0到size-1。当我们调用cur.remove(numsi)时,如果numsi的值大于等于cur的大小,就会抛出IndexOutOfBoundsException。

所以,在递归回溯时,我们通常移除最后一个元素,所以更常见的写法是:

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

或者,如果我们知道要移除的对象,也可以使用:

cur.remove(Integer.valueOf(numsi));

2、add(cur)

知道在写回溯的时候,一般会有:List<List<Integer>> res= new ArrayList<>(); List<Integer> cur = new ArrayList<>() ;

然后在dfs中判断添加:res.add 不过要注意,这里面要写 res.add(new ArrayList(cur)); 每次都是新的,否则这个cur是同一个值,每个都一样。

相关推荐
六点_dn30 分钟前
Linux学习笔记-printf命令
linux·运维·算法
遥感知识服务1 小时前
Sentinel-1 + DEM + FwDET + 随机森林:从快速水深初估到多因子误差修正
算法·随机森林·sentinel
来一碗刘肉面2 小时前
顺序表与链表的比较
数据结构·算法·链表
alphaTao2 小时前
LeetCode 每日一题 2026/7/13-2026/7/19
算法·leetcode
nnerddboy2 小时前
脑电信号处理实战 03 | 运动想象脑机接口入门:ERD/ERS、CSP 空间滤波与左右拳想象解码
算法·信号处理
QN1幻化引擎3 小时前
Dalin L — 我造了一门支持中文编程的语言,完整移植到 Rust 了
人工智能·算法·机器学习
Rainy Blue8833 小时前
C转C++速成
c语言·c++·算法
txzrxz3 小时前
二分图详解
数据结构·c++·算法·图论·深度优先搜索·二分图染色
gaosushexiangji4 小时前
数字图像相关DIC系统在结构振动模态测量中的应用
算法
KaMeidebaby4 小时前
卡梅德生物技术快报|如何制备单克隆抗体:小众禽类靶点单抗制备实操流程:双载体抗原交叉筛选完整工艺记录
人工智能·python·深度学习·算法·机器学习