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

两个链表求并集、交集、差集

两个链表求并集、交集、差集

两个链表求并集、交集、差集其实都是创建一个新链表然后遍历插入的题型,所以下边就举并集一个例子。

  • 首先将l1里的所有节点遍历存储到新节点l中
  • 开始遍历l2,如果l中不存在l2中的节点就将其尾插到l中

下面是两个链表求并集、交集、差集的代码实现:

class Main {
    //并集
    public static List<Integer> union(List l1,List l2){
        List<Integer> l=new LinkedList<>();
        for (int i = 0; i < l1.size(); i++) {
            l.add((Integer) l1.get(i));
        }
        for (int i = 0; i < l2.size(); i++) {
            for (int j = 0; j < l1.size();j++) {
               if(l2.get(i).equals(l1.get(j))){
                   break;
               }
               if(j==l2.size()-1){
                   l.add((Integer) l2.get(i));
               }
            }

        }

        return l;
    }
    public static List<Integer> intersection(List l1,List l2){
        List<Integer> l=new LinkedList<>();
        for (int i = 0; i < l1.size(); i++) {
            for (int j = 0; j < l2.size(); j++) {
                if(l1.get(i).equals(l2.get(j))){
                    l.add((Integer) l1.get(i));
                }
            }
        }
        return l;
    }
    //链表实验
    //任务二
    //差
    public static List<Integer> diff(List l1,List l2){
        //创建一个新链表存储差集
        List<Integer> l=new LinkedList<>();
        //遍历比较
        for (int i = 0; i < l1.size(); i++) {
            for (int j = 0; j < l2.size(); j++) {
                if(l1.get(i).equals(l2.get(j))){
                    break;
                }
                if(j==l2.size()-1){
                    l.add((Integer) l1.get(i));
                }
            }
        }
        return l;
    }
    public static void main(String[] args) {
        //创建三个链表

        List<Integer> l1=new LinkedList<>();
        List<Integer> l2=new LinkedList<>();
        //初始化l1和l2
        l1.add(1);
        l1.add(2);
        l1.add(3);
        l1.add(4);
        l2.add(2);
        l2.add(11);
        System.out.println("集合l1:"+l1);
        System.out.println("集合l2:"+l2);

        //并集
        System.out.println("l1和l2的并集:"+union(l1,l2));
        //交集
        System.out.println("l1和l2的交集:"+intersection(l1,l2));
        //差集
        System.out.println("l1-l2:"+diff(l1,l2));
        System.out.println("l2-l1:"+diff(l2,l1));

    }
}

实验结果如下所示:


http://www.kler.cn/a/389114.html

相关文章:

  • 车-路-站-网”信息耦合的汽车有序充电
  • 免费,WPS Office教育考试专用版
  • C#发票识别、发票查验接口集成、电子发票(航空运输电子行程单)
  • mac终端使用pytest执行iOS UI自动化测试方法
  • Jmeter基础篇(22)服务器性能监测工具Nmon的使用
  • AcWing 302 任务安排 斜率优化的dp
  • 微信小程序开发(二)登录流程
  • CMAKE 编译CUDA项目失败 “/usr/bin/nvcc“ is not able to compile a simple test program.
  • 通义千问API调用测试 (colab-python,vue)
  • 【机器学习】数学知识:指数
  • Android 延时操作的常用方法
  • Linux软件包管理
  • 分布式——BASE理论
  • 【harbor】离线安装2.9.0-arm64架构服务制作和升级部署
  • Java:JVM
  • 解决:使用EasyExcel导入Excel模板时出现数据导入不进去的问题
  • React前端框架:现代网页开发的基石(附带构建简单任务管理应用案例代码)
  • 栈(Stack)和队列(Deque、Queue)
  • 16.useForm
  • (附源码)django仓库管理系统-计算机毕设 30542
  • Python数据分析中的Pandas去重操作详解
  • mysql备份数据库及恢复
  • Elasticsearch和Lucene之间是什么关系?(ChatGPT回答)
  • 小米面试:什么是线程池?工作原理是什么?线程池可以动态修改吗?
  • 【python】路径与文件管理:pathlib库的现代用法
  • 【WRF后处理】基于wrf-python处理wrf运行结果wrfout_d01