[剣はオファーを指します。22]リンクリストの下からk番目のノード(スタック方式で解決)

リンクリストを入力し、リンクリストの下からk番目のノードを出力します。ほとんどの人の習慣に合わせるために、この質問は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) {
         Stack<ListNode> s=new Stack<>();
         if(head==null)
         return null;
         while(head!=null){
             s.push(head);
             head=head.next;
            
         }
         Stack<ListNode> s1=new Stack<>();
         
             if(!s.empty()){
             for(int i=0;i<k;i++){
               s1.push(s.peek());
               s.pop();
             }
         }
         return s1.peek();
    }
}

 

おすすめ

転載: blog.csdn.net/qq_44624536/article/details/114883898