1517:链表中倒数第k个结点 @jobdu
2013-12-17 04:37
190 查看
题目1517:链表中倒数第k个结点
时间限制:1 秒
内存限制:128 兆
特殊判题:否
提交:460
解决:233
题目描述:
输入一个链表,输出该链表中倒数第k个结点。
(hint: 请务必使用链表。)
输入:
输入可能包含多个测试样例,输入以EOF结束。
对于每个测试案例,输入的第一行为两个整数n和k(0<=n<=1000, 0<=k<=1000):n代表将要输入的链表元素的个数,k代表要查询倒数第几个的元素。
输入的第二行包括n个数t(1<=t<=1000000):代表链表中的元素。
输出:
对应每个测试案例,
若有结果,输出相应的查找结果。否则,输出NULL。
样例输入:
样例输出:
经典的题目,关键是corner case
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class S15 {
public static void main(String[] args) throws FileNotFoundException {
BufferedInputStream in = new BufferedInputStream(new FileInputStream("in.in"));
System.setIn(in);
Scanner cin = new Scanner(System.in);
while (cin.hasNextInt()) {
int n = cin.nextInt();
int k = cin.nextInt();
ListNode dummy = new ListNode(-1);
ListNode cur = dummy;
for(int i=0; i<n; i++){
cur.next = new ListNode(cin.nextInt());
cur = cur.next;
}
getLastKth(dummy, k);
}
}
public static void getLastKth(ListNode dummy, int k){
ListNode head = dummy.next;
ListNode probe = head;
int i;
for(i=0; i<k; i++){
if(probe != null){
probe = probe.next;
}else{
break;
}
}
if(i != k){
System.out.println("NULL");
return;
}
ListNode cur = head;
while(probe != null){
probe = probe.next;
cur = cur.next;
}
if(cur != null){
System.out.println(cur.val);
}else{
System.out.println("NULL");
}
}
static class ListNode{
int val;
ListNode next;
public ListNode(int val){
this.val = val;
this.next = null;
}
}
}
时间限制:1 秒
内存限制:128 兆
特殊判题:否
提交:460
解决:233
题目描述:
输入一个链表,输出该链表中倒数第k个结点。
(hint: 请务必使用链表。)
输入:
输入可能包含多个测试样例,输入以EOF结束。
对于每个测试案例,输入的第一行为两个整数n和k(0<=n<=1000, 0<=k<=1000):n代表将要输入的链表元素的个数,k代表要查询倒数第几个的元素。
输入的第二行包括n个数t(1<=t<=1000000):代表链表中的元素。
输出:
对应每个测试案例,
若有结果,输出相应的查找结果。否则,输出NULL。
样例输入:
5 2 1 2 3 4 5 1 0 5
样例输出:
4 NULL
经典的题目,关键是corner case
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class S15 {
public static void main(String[] args) throws FileNotFoundException {
BufferedInputStream in = new BufferedInputStream(new FileInputStream("in.in"));
System.setIn(in);
Scanner cin = new Scanner(System.in);
while (cin.hasNextInt()) {
int n = cin.nextInt();
int k = cin.nextInt();
ListNode dummy = new ListNode(-1);
ListNode cur = dummy;
for(int i=0; i<n; i++){
cur.next = new ListNode(cin.nextInt());
cur = cur.next;
}
getLastKth(dummy, k);
}
}
public static void getLastKth(ListNode dummy, int k){
ListNode head = dummy.next;
ListNode probe = head;
int i;
for(i=0; i<k; i++){
if(probe != null){
probe = probe.next;
}else{
break;
}
}
if(i != k){
System.out.println("NULL");
return;
}
ListNode cur = head;
while(probe != null){
probe = probe.next;
cur = cur.next;
}
if(cur != null){
System.out.println(cur.val);
}else{
System.out.println("NULL");
}
}
static class ListNode{
int val;
ListNode next;
public ListNode(int val){
this.val = val;
this.next = null;
}
}
}
相关文章推荐
- 九度_题目1517:链表中倒数第k个结点
- [链表]九度OJ-1517:链表中倒数第k个结点
- 【剑指Offer面试编程题】题目1517:链表中倒数第k个结点--九度OJ
- 【剑指Offer面试编程题】题目1517:链表中倒数第k个结点--九度OJ
- [剑指offer-1517]链表中倒数第k个结点
- 剑指Offer - 九度1517 - 链表中倒数第k个结点
- 【LeetCode】Remove Nth Node From End of List && 【九度】题目1517:链表中倒数第k个结点
- 题目1517:链表中倒数第k个结点-九度
- 题目1517:链表中倒数第k个结点
- 题目1517:链表中倒数第k个结点
- 题目1517:链表中倒数第k个结点
- 【九度OJ1517】|【剑指offer15】链表中倒数第k个结点
- [Jobdu] 题目1517:链表中倒数第k个结点
- 题目1517:链表中倒数第k个结点
- 九度oj 1517 链表中倒数第k个结点
- 题目1517:链表中倒数第k个结点
- 九度题目1517:链表中倒数第k个结点
- 【剑指Offer面试题】 九度OJ1517:链表中倒数第k个结点
- 剑指offer-题目1517:链表中倒数第k个结点 (2013.12.29)
- 九度oj-1517-链表中倒数第k个结点