私のアルゴ-
private static MyList skip$DeleteItem(MyList L , int M , int N){
MyList curr = L;
MyList prev = null;
while(curr != null){
int counter = 0;
while(curr != null && counter <M){
prev = curr;
curr = curr.next;
counter++;
}
counter = 0;
while(curr != null && counter < N){
curr = curr.next;
if(prev == null){
prev = curr;
}
else{
prev.next = curr;
}
counter ++;
}
}
return L;
}
これはすべての基本的なテストケースで機能しますが、値0をスキップして1を削除すると失敗します。
入力-9->34->8-> 7-> 5--> 4-> 6 ---> 3-> 1 ---> 2-> TAIL
Ouput-9-> 34-> TAIL
期待される-NULL(すべての要素を削除する必要があるため)
解決策は
while(curr != null && counter < N){
curr = curr.next;
if(prev == null){
curr = curr.next;
L = curr;
}
else{
prev.next = curr;
}
counter ++;
}