leetcodeチェーンテーブルの最後からN番目のノードc++を削除
1350 ワード
チェーンテーブルの最後からN番目のノードを削除
チェーンテーブルが与えられ、チェーンテーブルの最後からn番目のノードが削除され、チェーンテーブルのヘッダノードが返される.
例:
説明:
与えられたn保証は有効である.
ステップ:
スキャンを使って実現してみてもいいですか?
解:
ステップステップ:ダブルポインタ
チェーンテーブルが与えられ、チェーンテーブルの最後からn番目のノードが削除され、チェーンテーブルのヘッダノードが返される.
例:
: 1->2->3->4->5, n = 2.
, 1->2->3->5.
説明:
与えられたn保証は有効である.
ステップ:
スキャンを使って実現してみてもいいですか?
解:
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
int count=0;//
ListNode *p=head;
while(p)//
{
count++;
p=p->next;
}
p=head;
if(count==1) return {};//
else if(count-n==0) return head->next;//
else
{
for(int i=1;inext;
}
p->next=p->next->next;
}
return head;
}
};
ステップステップ:ダブルポインタ
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
ListNode *h=new ListNode(0);
h->next=head;
ListNode *p=h;
ListNode *k=h;
if(head->next==NULL) return {};
for(int i=0;i<=n;i++)
{
k=k->next;
}
while(k)
{
p=p->next;
k=k->next;
}
p->next=p->next->next;
return h->next;
}
};