• 算法22打印两个升序链表的公共部分


    描述

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

    输入描述:

    第一个链表的长度为 n。

    第二个链表的长度为 m。

    链表结点的值为 val。

    输出描述:

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

    示例1

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

    思路

    就是两条链表简单的比较,定义一个打印公共部分的方法:

    node1的值等于node2的值,打印出来,同时两个链表的指针下移一位。

    node1的值小于node2的值,打印出来,同时node1的指针下移一位。

    node1的值大于node2的值,打印出来,同时node2的指针下移一位。

    实现步骤:

    定义一个结点Node,有value,有next

    定义一个数组转链表的方法。

    再定义一个打印公共部分的方法,将两个链表传进来。

    代码如下:

    import java.util.Scanner;
    
    public class Main{
        
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            sc.nextLine();
            StringBuilder sb = new StringBuilder();
            String[] strArr = sc.nextLine().split(" ");
            Node node1 = Node.trans(strArr);
            
            sc.nextLine();
            String[] strArr2 = sc.nextLine().split(" ");
            Node node2 = Node.trans(strArr2);
            printCommonPart(node1,node2);
        }
        
        public static void printCommonPart(Node head1,Node head2) {
            while(head1 != null && head2 != null) {
                if(head1.value<head2.value){
                    head1 = head1.next;
                }
                else if(head1.value>head2.value){
                    head2 = head2.next;
                }
                else{
                    System.out.print(head1.value+" ");
                    head1 = head1.next;
                    head2 = head2.next;
                }
            }
        }
    }
    
    class Node {
        public int value;
        public Node next;
        
        public Node(int data) {
            this.value = data;
        }
        
        static Node trans(String[] nums) {
            Node head = new Node(Integer.parseInt(nums[0]));
            Node cur = head;
            for(int i=1;i<nums.length;i++) {
                cur.next = new Node(Integer.parseInt(nums[i]));
                cur = cur.next;
            }
            return head;
        }
    }
  • 相关阅读:
    css+javascript 仿outlook滑动菜单效果代码
    闭包
    AJAX式多数据源及节点异步加载树_meetrice
    CSS圆角边框表格
    Editplus 3.0 开发ext 教程
    IE右键快速转载到博客
    自已扩展EXT组件(Extending Ext Components)
    Ext程序规划入门
    EXT2联动选框 (Linked Combos Tutorial for Ext 2)
    EXT snippets 笔记
  • 原文地址:https://www.cnblogs.com/sfnz/p/16457688.html
Copyright © 2020-2023  润新知