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
- 1032. Sharing (25)-PAT
- 【PAT】1032. Sharing (25)
- PAT 1032. Sharing (25)
- PAT 1032. Sharing (25)
- PAT 1032. Sharing (25)
- PAT:1032. Sharing (25)
- PAT 1032. Sharing (25)
- pat 1032. Sharing (25)
- PAT 1032. Sharing (25)
- PAT 1003 Sharing (25)
- PAT 1032. Sharing (25)
- PAT-Sharing (25)
- 【PAT】A1032. Sharing (25)
- PAT A1032. Sharing (25)
- pat-a1032. Sharing (25)
- PAT 1032. Sharing (25)
- PAT 1032. Sharing (25)
- 1032. Sharing (25) PAT
- 新浪微博api使用
- 锁与事务处理
- easyui treegrid 封装(不用分页,用加载更多按钮)延迟加载加加载更多
- HTTP Response Status Code -- HTTP响应代码中文详解
- PAT-Sharing (25)
- 百练城堡问题
- Mysql 优化
- Switch控件详解
- Tomcat安装、配置、优化及负载均衡详解
- Boost-asio之二
- java网络编程工具-URLConnection
- 设计模式_Builder模式
- redisson2.2.2 使用redis命令 ZREVRANGE 排序