【算法】小点: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是同一个值,每个都一样。

相关推荐
地平线开发者5 小时前
【模型轻量化专题】衡量模型轻量性的指标
算法
学习星球9 小时前
OFDM技术精讲:正交性推导、循环前缀原理与80行Python链路仿真(附实测数据)
算法·面试·前端框架
alphaTao15 小时前
LeetCode 每日一题 2026/8/24-2026/8/30
python·算法·leetcode
Interview Aid11215 小时前
TikTok OA 四题分享|半小时内 AC,题目基本都是实现题
java·开发语言·算法·面试·职场和发展
顶点多余1 天前
那些在算法中适合巩固的知识点---1
java·前端·算法
罗西的思考1 天前
【Agentic RL / 强化学习框架】Molt 设计解读
人工智能·算法·机器学习
hahaha60161 天前
HLS高层次综合设计技巧--C++类和模板
图像处理·人工智能·算法·计算机视觉
多弗朗皮卡丘1 天前
算法详解4:买卖股票的最佳时机系列(上)
算法
维克兜率天1 天前
【维克】动量指标家族:RSI、ROC、CCI、Momentum全面解析
python·算法
AI情绪识别开源1 天前
检信 AI 智能推广平台(代号:JX-Promote)
人工智能·算法·erlang