PAT-Sharing (25)

来源:互联网 发布:易观千帆数据哪来的 编辑:程序博客网 时间:2024/06/05 09:26

题意:

链表题,寻找两个链表的公共节点。

解答:

单链表节点只有一个地址连向下个节点,所以公共节点以后肯定就剩一条链表。

这种题型直接从最后开始遍历,开始出现不相等了,这个就是我们要找的

PAT的链表题定义操作类似

用节点定义

将id和对象放到map中

再进行遍历

然后操作

具体java代码如下:

import java.util.*;public class Main{    public static void main(String[] args){        Scanner in=new Scanner(System.in);        String head1=in.next();        String head2=in.next();        int N=in.nextInt();        ArrayList<Node> list1=new ArrayList();        ArrayList<Node> list2=new ArrayList();        HashMap<String,Node> map=new HashMap();        for(int i=0;i<N;i++){            Node node=new Node();            node.id=in.next();            node.val=in.next();            node.next=in.next();            map.put(node.id,node);        }        while(!head1.equals("-1")){            Node nd=map.get(head1);            list1.add(nd);            head1=nd.next;                     }        while(!head2.equals("-1")){            Node nd=map.get(head2);            list2.add(nd);            head2=nd.next;        }        int a=list1.size();        int b=list2.size();        int len=a>b?b:a;        int temp=0;        for(int i=0;i<len;i++){            String a1=list1.get(a-1-i).val;            String a2=list2.get(b-1-i).val;            if(a1!=a2){               temp=i-1;                break;            }        }        if(temp<0){            System.out.println("-1");        }        else            System.out.println(list1.get(a-1-temp).id);    }}class Node{    String id;    String val;    String next;}



0 0
原创粉丝点击