首页 > 编程语言 >程序员代码面试指南第二版 12.打印两个升序链表的公共部分

程序员代码面试指南第二版 12.打印两个升序链表的公共部分

时间:2023-01-18 10:39:00浏览次数:63  
标签:p2 12 ListNode val next 链表 p1 升序


​welcome to my blog​

程序员代码面试指南第二版 12.打印两个升序链表的公共部分

题目描述

题目描述
给定两个升序链表,打印两个升序链表的公共部分。

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

第二个链表的长度为 m。

链表结点的值为 val。

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

示例1

输入
4
1 2 3 4
5
1 2 3 5 6

输出
1 2 3

第一次做; 核心:两个指针p1,p2分别指向两个链表的开头, 谁小移动谁; p1.val<p2.val则p1向下移动一个, p1.val>p2.val则p2向下移动一下, p1.val==p2.val则打印val并且p1,p2都向下移动一下

import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = Integer.parseInt(sc.nextLine());
ListNode head1 = new ListNode(0);
String[] str = sc.nextLine().split(" ");
ListNode curr = head1;
for(int i=0; i<n; i++){
curr.next = new ListNode(Integer.parseInt(str[i]));
//update
curr = curr.next;
}
ListNode head2 = new ListNode(0);
curr = head2;
int m = Integer.parseInt(sc.nextLine());
str = sc.nextLine().split(" ");
for(int i=0; i<m; i++){
curr.next = new ListNode(Integer.parseInt(str[i]));
//update
curr = curr.next;
}
//开始找链表的公共部分
ListNode p1 = head1.next, p2 = head2.next;
while(p1!=null && p2!=null){
if(p1.val < p2.val)
p1 = p1.next;
else if(p1.val > p2.val)
p2 = p2.next;
else{
System.out.print(p1.val+" ");
p1 = p1.next;
p2 = p2.next;
}
}
}
public static class ListNode{
int val;
ListNode next = null;
ListNode(int val){
this.val = val;
}
}
}


标签:p2,12,ListNode,val,next,链表,p1,升序
From: https://blog.51cto.com/u_2420922/6019015

相关文章

  • (转)12.手撕Go语言-方法
    原文:https://www.jianshu.com/p/a122a93ccc69方法是为特定类型定义的,只能由该类型调用的函数定义方法是添加了接收者的函数,接收者必须是自定义的类型   1......
  • P1012 [NOIP1998 提高组] 拼数
    P1012[NOIP1998提高组]拼数#include<stdio.h>#include<stdlib.h>#include<string.h>#defineLENGTH11intminn(inta,intb){returna<b?a:b;}......
  • day12-继承
    1.继承1.1继承的实现(掌握)继承的概念继承是面向对象三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,以及追加属性和方法实现继承的格式......
  • P1352 没有上司的舞会+P1122 最大子树和(树形DP入门)
    前言今日偶然打开\(oi-wiki\),发现树形\(DP\)例题正好是之前在洛谷上鸽着的一道题。所以......\(\color{red}{很高兴以这样的方式认识你,树形DP!}\)这例题造的太好了......
  • P4012 题解
    前言题目传送门!更好的阅读体验?网络流\(24\)题:最大费用最大流。思路首先我们只看每一个点。是典型的方格取数问题,可以考虑费用流。对于一个相邻的、可以走到的点\(......
  • 【230117-4】四边形ABCD中,角ABC=30度,三角形ACD为等边三角形,AB=9,BC=12. 求:BD的长?
    注意存在等边三角形时作辅助线是以某边再构造一个等边三角形。......
  • [数据结构]双向链表(C语言)
    双向链表双向链表概念双向链表也叫双链表,其每个数据结点中都有两个指针,分别指向直接后继和直接前驱。在单向链表中若要找到某个节点的前驱节点,需要先遍历到这个节点,然后......
  • 12.AOP
    1.什么是AOPAOP(AspectOrientedProgramming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一......
  • 【LeetCode链表#9】图解:两两交换链表节点
    两两交换链表中的节点力扣题目链接(opensnewwindow)给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节......
  • 执行explain plan语句时报错ora-12838
    问题描述:执行explainplan语句时报错ora-12838,如下所示:HR@orcl150>insert/*+APPENDPARALLEL*/intot_hr_20230117_new(id,time)select*fromt_hr_20230117;86396ro......