一:題目
二:題目解答
首先我們先想到,既然是要刪除倒數第n個節點。那麼我們先一遍遍歷得到鍊錶的總長度,然後在根據n值,找到要刪除的前乙個節點,進行刪除就可以了。在這裡需要注意的是,為了避免鍊錶只有乙個節點,而這個節點要被刪除的情況,我們建立的指標最好是啞結點的。**如下:
class solution
system.out.println(i);
int taget = i - n;
listnode answer = new listnode(-1);
answer.next = head;
listnode tmp2 = answer;
for (int j = 0; j < taget; j++)
tmp2.next = tmp2.next.next;
return answer.next;
}
看了答案後。感覺自己演算法很多地方可以優化,先對其進行改進:
class solution
system.out.print(length);
int target=length-n;
listnode second=tmp;
for(int j=0;j
second.next=second.next.next;//刪除乙個元素
return tmp.next;
}}
leetcode19 刪除倒數第n個節點
def removenthfromend self,head,n 定義兩個指標,表示兩個元素的間隔,間隔大小固定為n 1,兩個指標分別為pre,end pre head end head for in range n end end.next if end is none 需要刪除的節點為第乙個節點...
Leetcode 19 刪除鍊錶的倒數第N個節點
給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.說明 給定的 n 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?解法 看到這種鍊錶求倒數n的題就想到了用前後指標,類似的題目還有...
leetcode19 刪除鍊錶的倒數第N個節點
給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.說明 給定的 n 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?definition for singly linked lis...