You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何高效利用LinkedList生成元素插入所有索引的嵌套列表?

高效实现方案

思路分析

原列表长度为n时,可插入0的位置共有n+1个(从索引0到索引n)。我们只需要遍历每个插入位置,基于原列表创建新列表并插入0,最后将所有新列表收集起来即可。整体时间复杂度为O(n²),这是该问题的最优复杂度——毕竟最终结果总共有(n+1)²个元素,必须完成这么多次操作。

方式一:基础循环实现(直观高效)

这种方式代码清晰,性能稳定,适合大多数场景:

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Arrays;

public class InsertZeroDemo {
    public static void main(String[] args) {
        List<Integer> list = new LinkedList<>(Arrays.asList(1, 2, 3));
        List<List<Integer>> result = new ArrayList<>();
        
        // 遍历所有可插入的位置:0到list.size()(共list.size()+1个位置)
        for (int i = 0; i <= list.size(); i++) {
            // 用ArrayList做临时列表更适合随机插入操作,性能比LinkedList更稳定
            List<Integer> temp = new ArrayList<>(list);
            temp.add(i, 0);
            result.add(temp);
        }
        
        System.out.println(result); // 输出目标结果:[[0, 1, 2, 3], [1, 0, 2, 3], [1, 2, 0, 3], [1, 2, 3, 0]]
    }
}

小提示:这里选ArrayList而非原列表的LinkedList做临时容器,是因为LinkedList的指定位置插入需要先遍历到对应索引,实际性能反而不如ArrayList在这种场景下的表现。

方式二:Stream流实现(简洁优雅)

如果偏好函数式编程风格,Java 8+的Stream可以让代码更简洁,性能和循环方式不相上下:

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Arrays;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class InsertZeroStreamDemo {
    public static void main(String[] args) {
        List<Integer> list = new LinkedList<>(Arrays.asList(1, 2, 3));
        
        List<List<Integer>> result = IntStream.rangeClosed(0, list.size())
                .mapToObj(i -> {
                    List<Integer> temp = new ArrayList<>(list);
                    temp.add(i, 0);
                    return temp;
                })
                .collect(Collectors.toList());
        
        System.out.println(result);
    }
}

关于性能的补充

因为问题本身需要生成n+1个长度为n+1的列表,总元素数是(n+1)²,所以无论哪种实现,时间复杂度都无法低于O(n²),上面两种方式都是该场景下的高效选择。

内容的提问来源于stack exchange,提问作者Leeren

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:03:49