两个链表的公共值

2023-05-16

现有两个升序链表,且链表中均无重复元素。请设计一个高效的算法,打印两个链表的公共值部分。

给定两个链表的头指针headAheadB,请返回一个vector,元素为两个链表的公共部分。请保证返回数组的升序。两个链表的元素个数均小于等于500。保证一定有公共值

测试样例:
{1,2,3,4,5,6,7},{2,4,6,8,10}
返回:[2.4.6]
代码如下:
package lianbiao;

import java.util.ArrayList;
import java.util.List;

public class lianbiaogonggongzhi {

	public static void main(String[] args) {
		ListNode headA = new ListNode(3);
		ListNode headA2 = new ListNode(4);
		ListNode headA3 = new ListNode(5);
		headA.next = headA2;
		headA2.next = headA3;

		ListNode headB = new ListNode(4);
		ListNode headB2 = new ListNode(5);
		ListNode headB3 = new ListNode(6);
		ListNode headB4 = new ListNode(7);
		headB.next = headB2;
		headB2.next = headB3;
		headB3.next = headB4;
		int[] arr = lianbiaogonggongzhi.findCommonParts(headA, headB);
		for (int i = 0; i < arr.length; i++) {
              System.out.print(arr[i]+" ");
		}
	}

	public static int[] findCommonParts(ListNode headA, ListNode headB) {
		// write code here
		List<Integer> list = new ArrayList<Integer>();
		while (headA != null && headB != null) {
			if (headA.val < headB.val) {
				headA = headA.next;
			} else if (headA.val > headB.val) {
				headB = headB.next;
			} else {
				list.add(headA.val);
				headA = headA.next;
				headB = headB.next;
				
			}
		}
		int[] arr = new int[list.size()];
		for (int i = 0; i < arr.length; i++) {
			arr[i] = list.get(i);
		}
		return arr;
	}

	static class ListNode {
		int val = 0;
		ListNode next = null;

		ListNode(int val) {
			this.val = val;
		}
	}
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

两个链表的公共值 的相关文章

  • 可查询最值的栈

    定义栈的数据结构 xff0c 请在该类型中实现一个能够得到栈最小元素的min函数 代码如下 xff1a 定义两个栈 xff0c 一个stackData xff0c 一个stackMin 将数组中的元素一个个压入stackData栈的时候 x
  • 归并排序(详解)

    时间复杂度 xff1a O xff08 n logn xff09 空间复杂度 xff1a O xff08 n xff09 归并排序分为拆分和归并两个过程 拆分 xff1a 拆分是一个递归的过程 xff0c 实质是将待排序数组均分再均分 xf
  • 双栈队列

    编写一个类 只能用两个栈结构实现队列 支持队列的基本操作 push xff0c pop 给定一个操作序列ope 及它的长度n xff0c 其中元素为正数代表push操作 xff0c 为0代表pop操作 xff0c 保证操作序列合法且一定含p
  • 在进行数据库编程时,连接池有什么作用?

    由于创建连接和释放连接都有很大的开销 xff08 尤其是数据库服务器不在本地时 xff0c 每次建立连接都需要进行TCP 的三次握手 xff0c 释放连接需要进行TCP四次握手 xff0c 造成的开销是不可忽视的 xff09 为了提升系统访
  • Java 虚拟机 gc算法总结

    一 垃圾收集基本的算法 1 引用计数 Reference Counting 为每一个对象添加一个计数器 xff0c 计数器记录了对该对象的活跃引用的数量 如果计数器为0 xff0c 则说明这个对象没有被任何变量所引用 xff0c 即应该进行
  • JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

    从jason0539转载 链接地址http blog csdn net jason0539 在面向对象编程中 最通常的方法是一个new操作符产生一个对象实例 new操作符就是用来构造对象实例的 但是在一些情况下 new操作符直接生成对象会带
  • JAVA设计模式之抽象工厂模式

    从jason0539转载 链接地址http blog csdn net jason0539 前面已经介绍过 简单工厂模式和工厂方法模式 xff0c 这里继续介绍第三种工厂模式 xff0d 抽象工厂模式 xff0c 还是以汽车的制造为例 例子
  • 双栈排序

    请编写一个程序 xff0c 按升序对栈进行排序 xff08 即最大元素位于栈顶 xff09 xff0c 要求最多只能使用一个额外的栈存放临时数据 xff0c 但不得将元素复制到别的数据结构中 给定一个int numbers C 43 43
  • TCP/IP协议与UDP/IP协议的区别

    TCP xff08 Transmission Control Protocol xff0c 传输控制协议 xff09 是面向连接的协议 xff0c 也就是说 xff0c 在收发数据前 xff0c 必须和对方建立可靠的连接 一个TCP连接必须
  • 滑动窗口

    有一个整型数组 arr 和一个大小为 w 的窗口从数组的最左边滑到最右边 窗口每次向右边滑一个位置 返回一个长度为n w 43 1的数组res xff0c res i 表示每一种窗口状态下的最大值 以数组为 4 3 5 4 3 3 6 7
  • 数组变树

    对于一个没有重复元素的整数数组 xff0c 请用其中元素构造一棵MaxTree xff0c MaxTree定义为一棵二叉树 xff0c 其中的节点与数组元素一一对应 xff0c 同时对于MaxTree的每棵子树 xff0c 它的根的元素值为
  • JAVA设计模式初探之适配器模式

    转载http blog csdn net jason0539 1 概述 将一个类的接口转换成客户希望的另外一个接口 Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作 2 解决的问题 即Adapter模式使得原本由
  • Linux使用Note

    这个文档正在维护完善中 1 释放Swap空间 依次执行如下命令即可 xff0c span class token function sync span span class token builtin class name echo spa
  • JAVA设计模式之单例模式

    转载http blog csdn net jason0539 概念 xff1a java 中单例模式是一种常见的设计模式 xff0c 单例模式的写法有好几种 xff0c 这里主要介绍三种 xff1a 懒汉式单例 饿汉式单例 登记式单例 单例
  • Java HashMap的工作原理

    本文由 ImportNew miracle1919 翻译自 javacodegeeks 欢迎加入 翻译小组 转载请见文末要求 本文由 ImportNew miracle1919 翻译自 javacodegeeks 欢迎加入 翻译小组 转载请
  • 环形链表插值

    有一个整数val xff0c 如何在节点值有序的环形链表中插入一个节点值为val的节点 xff0c 并且保证这个环形单链表依然有序 给定链表的信息 xff0c 及元素的值A 及对应的nxt 指向的元素编号同时给定val xff0c 请构造出
  • 访问单个节点的删除

    实现一个算法 xff0c 删除单向链表中间的某个结点 xff0c 假定你只能访问该结点 给定带删除的节点 xff0c 请执行删除操作 xff0c 若该节点为尾节点 xff0c 返回false xff0c 否则返回true 代码实现 xff1
  • 寻找下一个结点

    题目描述 请设计一个算法 xff0c 寻找二叉树中指定结点的下一个结点 xff08 即中序遍历的后继 xff09 给定树的根结点指针TreeNode root 和结点的值int p xff0c 请返回值为p的结点的后继结点的值 保证结点的值
  • 最近公共祖先

    题目描述 有一棵无穷大的满二叉树 xff0c 其结点按根结点一层一层地从左往右依次编号 xff0c 根结点编号为1 现在有两个结点a xff0c b 请设计一个算法 xff0c 求出a和b点的最近公共祖先的编号 给定两个int a b 为给

随机推荐

  • 汉罗塔问题递归实现

    代码如下 xff1a include lt stdio h gt long k 61 0 void move char x char y void hn int n char a char b char c int main int n p
  • java中 static变量和方法到底是存在内存什么区域呢?

    需要学习资料的 43 微信公众号 学习资源后台找我 本人比较忙 我看到了会在后台帮你 xff0c 谢谢关注啦 JVM内存总体一共分为了 4个部分 stack segment heap segment code segment data se
  • 循环有序数组最小值

    对于一个有序循环数组arr xff0c 返回arr中的最小值 有序循环数组是指 xff0c 有序数组左边任意长度的部分放到右边去 xff0c 右边的部分拿到左边来 比如数组 1 2 3 3 4 xff0c 是有序循环数组 xff0c 4 1
  • coreApp=true属性及android4.2下多用户进程启动说明

    1 关于coreApp 61 true的说明 xff0c 在manifest中增加该属性 xff0c 其实并不是代表该APP具有系统权限 xff0c 而是把该类app归类为核心APP xff0c 核心app其实也是最小android fra
  • 元素最左出现

    对于一个有序数组arr xff0c 再给定一个整数num xff0c 请在arr中找到num这个数出现的最左边的位置 给定一个数组arr 及它的大小n xff0c 同时给定num 请返回所求位置 若该元素在数组中未出现 xff0c 请返回
  • 局部最小值位置

    定义局部最小的概念 arr长度为1时 xff0c arr 0 是局部最小 arr的长度为N N gt 1 时 xff0c 如果arr 0 lt arr 1 xff0c 那么arr 0 是局部最小 xff1b 如果arr N 1 lt arr
  • 最左原位

    有一个有序数组arr xff0c 其中不含有重复元素 xff0c 请找到满足arr i 61 61 i条件的最左的位置 如果所有位置上的数都不满足条件 xff0c 返回 1 给定有序数组arr 及它的大小n xff0c 请返回所求值 测试样
  • 快速N次方

    如果更快的求一个整数k的n次方 如果两个整数相乘并得到结果的时间复杂度为O 1 xff0c 得到整数k的N次方的过程请实现时间复杂度为O logN 的方法 给定k 和n xff0c 请返回k的n次方 xff0c 为了防止溢出 xff0c 请
  • 二进制插入

    题目描述 有两个32位整数n和m xff0c 请编写算法将m的二进制数位插入到n的二进制的第j到第i位 其中二进制的位数从低位数到高位且以0开始 给定两个数int n 和int m xff0c 同时给定int j 和int i xff0c
  • 二进制小数

    题目描述 有一个介于0和1之间的实数 xff0c 类型为double xff0c 返回它的二进制表示 如果该数字无法精确地用32位以内的二进制表示 xff0c 返回 Error 给定一个double num xff0c 表示0到1的实数 x
  • 最接近的数

    题目描述 有一个正整数 xff0c 请找出其二进制表示中1的个数相同 且大小最接近的那两个数 一个略大 xff0c 一个略小 给定正整数int x xff0c 请返回一个vector xff0c 代表所求的两个数 xff08 小的在前 xf
  • 二叉树的递归实现(先,中,后)

    package erchashu import java util ArrayList import java util List public class diguierchashu public static List lt TreeN
  • 二叉树的非递归实现(先,中,后)

    先序 public void xianxu TreeNode root if root 61 61 null return stack push root while stack isEmpty TreeNode tmp 61 stack
  • 整数转化

    题目描述 编写一个函数 xff0c 确定需要改变几个位 xff0c 才能将整数A转变成整数B 给定两个整数int A xff0c int B 请返回需要改变的数位个数 测试样例 xff1a 10 5 返回 xff1a 4 思路 xff1a
  • 串口日志缺少log怎么办?

    输出到串口的日志级别跟输出到内存的日志级别不一样 配置在 proc sys kernel printk 节点 当前 user 版本配置是 xff1a 4 4 1 4 xff0c 含义如下 xff1a 4 xff1a 串口输出级别 xff0c
  • 奇偶位交换

    题目描述 请编写程序交换一个数的二进制的奇数位和偶数位 xff08 使用越少的指令越好 xff09 给定一个int x xff0c 请返回交换后的数int 测试样例 xff1a 10 返回 xff1a 5 解题思路 xff1a xff08
  • 找出缺失的整数

    题目描述 数组A包含了0到n的所有整数 xff0c 但其中缺失了一个 对于这个问题 xff0c 我们设定限制 xff0c 使得一次操作无法取得数组number里某个整数的完整内容 唯一的可用操作是询问数组中第i个元素的二进制的第j位 最低位
  • 二叉树的序列化

    首先我们介绍二叉树先序序列化的方式 xff0c 假设序列化的结果字符串为str xff0c 初始时str等于空字符串 先序遍历二叉树 xff0c 如果遇到空节点 xff0c 就在str的末尾加上 xff0c 表示这个节点为空 xff0c 节
  • 链表的分化

    对于一个链表 xff0c 我们需要用一个特定阈值完成对它的分化 xff0c 使得小于等于这个值的结点移到前面 xff0c 大于该值的结点在后面 xff0c 同时保证两类结点内部的位置关系不变 给定一个链表的头结点head xff0c 同时给
  • 两个链表的公共值

    现有两个升序链表 xff0c 且链表中均无重复元素 请设计一个高效的算法 xff0c 打印两个链表的公共值部分 给定两个链表的头指针headA 和headB xff0c 请返回一个vector xff0c 元素为两个链表的公共部分 请保证返