首页 > 试题广场 >

打印两个升序链表的公共部分

[编程题]打印两个升序链表的公共部分
  • 热度指数:5023 时间限制:C/C++ 4秒,其他语言8秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定两个升序链表,打印两个升序链表的公共部分。

输入描述:
第一个链表的长度为 n。

第二个链表的长度为 m。

链表结点的值为 val。


输出描述:
输出一行整数表示两个升序链表的公共部分的值 (按升序输出)。
示例1

输入

4
1 2 3 4
5
1 2 3 5 6

输出

1 2 3

备注:


头像 简笔话_Golden
发表于 2020-04-01 23:33:02
/** * @描述:打印两个升序链表的公共部分 * @思路: * @复杂度:时间复杂度 O(N) (N为两个链表中较长链表的长度) * @链接:https://www.nowcoder.com/practice/8943eea40dbb4185b187d80fd050fee9?tpId=10 展开全文
头像 我要出去乱说
发表于 2022-06-26 10:27:40
1、思路 打印所有公共的部分,不止是连续的公共部分,用两个指针a与b从头遍历两个升序链表: 若a的值小于b,则a往下移动; 若b的值小于a,则b往下移动; 若a的值等于b,则打印该值,且两个指针都往下移动一步。 2、代码 #include <iostream> #include 展开全文
头像 星晨
发表于 2020-11-27 00:24:25
解题思路 首先题意没有提最长,也没有提公共所以可以理解我只要有相同的都可以打印两个链表进行逐渐对比,指针如何移动呢?相同则移动两个指针的指针不同的时候由于链表是升序值小的指针后移备注fmt.Scanf 获取数据,测试用例没有问题,就是提示超时,通过率75%换成 bufio 获取数据即可 packag 展开全文
头像 快支棱起来的椰子很愤怒
发表于 2022-01-19 15:18:04
n = int(input()) l1 = list(map(int, input().split())) m = int(input()) l2 = list(map(int, input().split())) res = [] i, j = 0, 0 while i < n and j 展开全文
头像 喝牛奶的牛
发表于 2020-03-05 05:44:25
解题思路 因为是两个升序链表,用两个指针去遍历各自的链表,直到任意指针为空(某一个链表遍历完毕);如果a_head的值大于b_head的值, 则b_head++(去寻找能等于a链表的节点)如果a_head的值小于b_head的值, 则a_head++(去寻找能等于b链表的节点)如果a_head的值等 展开全文
头像 于涵。
发表于 2022-09-08 09:22:58
# include <bits/stdc++.h> using namespace std; int main(){     int n, m;   &nb 展开全文