1. 程式人生 > 其它 >返回倒數第 k 個節點Java版(力扣)

返回倒數第 k 個節點Java版(力扣)

技術標籤:連結串列javaleetcode

返回倒數第 k 個節點

實現一種演算法,找出單向連結串列中倒數第 k 個節點。返回該節點的值。
注意:本題相對原題稍作改動

示例:
輸入: 1->2->3->4->5 和 k = 2
輸出: 4

說明:給定的 k 保證是有效的。

題意:找到單向連結串列的倒數第k個節點,返回該節點的值。

思路:我們可以先從頭遍歷到最後,統計下總共有多少個節點(num),然後我們在遍歷一次,這次遍歷的次數是(num-k),這樣就可以遍歷到倒數第k個節點了,返回該節點的值即可。

正確程式碼:

class Solution {
    public
int kthToLast(ListNode head, int k) { int num=1; ListNode node = head; while(node.next!=null){ num++; node =node.next; } for(int i=0;i<num-k;i++){ head=head.next; } num= head.val; return num; }
}

完整程式碼(含測試程式碼):

package com.Keafmd.day0103;

/**
 * Keafmd
 *
 * @ClassName: KthNodeFromEndofList
 * @Description: 返回倒數第 k 個節點
 * @author: 牛哄哄的柯南
 * @date: 2021-01-03 19:08
 */
public class KthNodeFromEndofList {
    public static void main(String[] args) {
        Solution solution = new Solution();
        //建立節點
ListNode node1 = new ListNode(1); ListNode node2 = new ListNode(2); ListNode node3 = new ListNode(3); ListNode node4 = new ListNode(4); ListNode node5 = new ListNode(5); //連線成單鏈表 node1.next=node2; node2.next=node3; node3.next=node4; node4.next=node5; //用result接收返回值 int result = solution.kthToLast(node1,2); System.out.println(result); } } class ListNode { int val; ListNode next; ListNode(int x) { val = x; } } class Solution { public int kthToLast(ListNode head, int k) { int num=1; // 記錄節點總數,後面會重複利用num作為返回值,暫存倒數第k個節點的值 //遍歷單向連結串列,統計節點總數 ListNode node = head; while(node.next!=null){ num++; node =node.next; } //遍歷到倒數第k個節點的位置 for(int i=0;i<num-k;i++){ head=head.next; } //用num暫存倒數第k個節點的值,此時的head是倒數第個節點 num= head.val; return num; } }

輸出結果:

4

Process finished with exit code 0

看完如果對你有幫助,感謝點贊支援!
如果你是電腦端,看到右下角的 “一鍵三連” 了嗎,沒錯點它[哈哈]

在這裡插入圖片描述
加油!

共同努力!

Keafmd