leetcode-JZ22
1387 ワード
問題面
チェーンテーブルを入力し、チェーンテーブルの最後からk番目のノードを出力します.多くの人の習慣に合うように、本題は1から数え始めます.すなわち、チェーンテーブルの末尾ノードは最後から1番目のノードです.
たとえば、チェーンテーブルには
例:
原題リンク
ぶんせき
区間スライド思想は、コード注釈を見ればよい
ソースコード(注釈部分が構想)
チェーンテーブルを入力し、チェーンテーブルの最後から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.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* getKthFromEnd(ListNode* head, int k) {
int n=1;
ListNode* tmp = head;
ListNode* backup = head;
// k 1
if(n==k){
tmp = backup;
backup = head;
}
// head k , head k head_before_k, head ,head_before_k
while(head->next!=NULL){
head = head->next;
n++;
if(n==k){
tmp = backup;
backup = head;
}
if(n>k){
tmp = tmp->next;
}
}
return tmp;
}
};