剑指offer-----链表中倒数第k个节点
2018-02-02 13:20
459 查看
1、题目描述
输入一个链表,输出该链表中倒数第k个结点。
2、思路
设置两个指针,一个指针先向前走k-1步,然后两个指针同时向前走,第一个指针走到结尾时,第二个指针正好走到倒数第k个节点。注意三种情况:
(1)参数k<=0
(2)输入的链表为空
(3)链表中的节点数小于k
代码如下:
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
if(k <= 0){//参数k小于等于0
return null;
}
if(head == null){//输入的链表为空
return null;
}
ListNode pAhead = head;
ListNode pBhead = null;
for(int i=0;i<k-1;i++){//一个指针先向前走k-1步,然后两个指针同时向前走,第一个指针走到结尾时,第二个
//指针正好走到倒数第k个节点
if(pAhead.next != null){ //链表中的节点小于k个
pAhead = pAhead.next;
}else{
return null;
}
}
pBhead = head;
while(pAhead.next != null){
pAhead = pAhead.next;
pBhead = pBhead.next;
}
return pBhead;
}
public static void main(String args[]){
ListNode node1 = new ListNode(1);
ListNode node2 = new ListNode(2);
ListNode node3 = new ListNode(3);
node1.next = node2;
node2.next = node3;
Solution s = new Solution();
s.FindKthToTail(node1,2);
}
}
1、题目描述
输入一个链表,输出该链表中倒数第k个结点。
2、思路
设置两个指针,一个指针先向前走k-1步,然后两个指针同时向前走,第一个指针走到结尾时,第二个指针正好走到倒数第k个节点。注意三种情况:
(1)参数k<=0
(2)输入的链表为空
(3)链表中的节点数小于k
代码如下:
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
if(k <= 0){//参数k小于等于0
return null;
}
if(head == null){//输入的链表为空
return null;
}
ListNode pAhead = head;
ListNode pBhead = null;
for(int i=0;i<k-1;i++){//一个指针先向前走k-1步,然后两个指针同时向前走,第一个指针走到结尾时,第二个
//指针正好走到倒数第k个节点
if(pAhead.next != null){ //链表中的节点小于k个
pAhead = pAhead.next;
}else{
return null;
}
}
pBhead = head;
while(pAhead.next != null){
pAhead = pAhead.next;
pBhead = pBhead.next;
}
return pBhead;
}
public static void main(String args[]){
ListNode node1 = new ListNode(1);
ListNode node2 = new ListNode(2);
ListNode node3 = new ListNode(3);
node1.next = node2;
node2.next = node3;
Solution s = new Solution();
s.FindKthToTail(node1,2);
}
}
相关文章推荐
- 剑指offer面试题22:链表中倒数第K个节点
- 【剑指offer】链表倒数第k个节点
- 剑指offer-链表中倒数第K个节点-php
- 剑指offer15:链表中倒数第k个节点
- 剑指Offer15:链表中倒数第k个节点
- 剑指offer 面试题15 链表中的倒数第k个节点
- 剑指Offer-22:链表中倒数第k个节点
- 剑指Offer----链表中倒数第k个节点
- 剑指offer 链表中倒数第K个节点
- [剑指Offer]链表中的倒数第k个节点
- 剑指offer 3.4 代码的鲁棒性1- 链表中倒数第K个节点
- 剑指offer--链表中倒数第K个节点
- 剑指offer 链表中倒数第k个节点
- 剑指offer-题15:链表中倒数第k个节点
- 剑指offer--面试题22:链表中倒数第k个节点
- 牛客网-剑指offer-14-打印一个链表的倒数第k个节点
- 剑指offer--链表倒数第K个节点
- 剑指offer-14.链表中倒数第k个节点
- 剑指offer——链表中倒数第k个节点
- 剑指Offer :寻找链表中倒数第K个节点