【剑指offer】面试题22:链表中倒数第k个节点(Java)
輸入一個鏈表,輸出該鏈表中倒數第k個節點。為了符合大多數人的習慣,本題從1開始計數,即鏈表的尾節點是倒數第1個節點。例如,一個鏈表有6個節點,從頭節點開始,它們的值依次是1、2、3、4、5、6。這個鏈表的倒數第3個節點是值為4的節點。
?
示例:
給定一個鏈表: 1->2->3->4->5, 和 k = 2.
返回鏈表 4->5.
代碼:
/**
?*?Definition?for?singly-linked?list.
?*?public?class?ListNode?{
?*?????int?val;
?*?????ListNode?next;
?*?????ListNode(int?x)?{?val?=?x;?}
?*?}
?*/
class?Solution?{
????public?ListNode?getKthFromEnd(ListNode?head,?int?k)?{
????????if(head==null)
????????{
????????????return?head;
????????}
????????ListNode?p=head;
????????while(k!=1)
????????{
????????????if(p.next==null)
????????????{
????????????????return?head;
????????????}
????????????p?=?p.next;
????????????k--;
????????}
????????ListNode?q?=?head;
????????while(p.next!=null)
????????{
????????????p?=?p.next;
????????????q?=?q.next;
????????}
????????return?q;
????}
}
總結
以上是生活随笔為你收集整理的【剑指offer】面试题22:链表中倒数第k个节点(Java)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode--494. 目标和
- 下一篇: 【剑指offer】面试题63:股票的最大