問題描述
給定鍊錶的頭節點head,實現刪除鍊錶的中間節點的方法;
若為偶數個:比如1234則刪除節點2;
給定鍊錶的頭節點head,實現刪除鍊錶的a/b處節點的方法;
思路分析
刪除中間節點
1個節點,不刪除;
2個節點,刪除節點1;
3個節點,刪除節點2;
4個節點,刪除節點2;
5個節點,刪除節點3;
6個節點,刪除節點3;
可以觀察得出,在2個節點以上的情況下,後面每存在兩個節點則被刪除的節點往後移1;所以可以在k>2的時候進行判斷:
while(current.next != null && current.next.next != null)
刪除a/b處節點
給定整數a和b,實現刪除位於a/b位置的節點;
打個比方:1->2->3->4->5 這個鍊錶
如果在區間 (0,1/5], 刪除節點1;
如果在區間 (0,2/5], 刪除節點2;
如果在區間 (0,3/5], 刪除節點3;
如果在區間 (0,4/5], 刪除節點4;
如果在區間 (0,1], 刪除節點5;
可以看出,是在r = ( a / b ) * n 然後將n向上取整得到的節點位置的方法;
所以根本是在於 求出 r的值並且運用math.ceil()方法向上取整來得到準確的節點值,然後遍歷鍊錶刪除即可;
package com.angel.num3;
class node
}public
class removedemo
pre.next = pre.next.next;
return head;
}//刪除鍊錶的a/b中間節點
public node removebyration(node head, int a, int b)
n = (int) math.ceil((double)(a*n) / (double) b);
if (n == 1)
head =head.next;
if (n >1)
return head;
}}
鍊錶問題03 刪除鍊錶的中間節點和a b處的節點
題目 給定鍊錶的頭節點head,實現刪除鍊錶的中間節點的函式。例如 鍊錶為空或長度為1,不刪除任何節點 1 2,刪除節點1 1 2 3,刪除節點2 1 2 3 4,刪除節點2 1 2 3 4 5,刪除節點3 高階 給定鍊錶的頭節點head 整數a和b,實現刪除位於a b處節點的函式。例如 鍊錶 1 ...
鍊錶中間節點
題目 給定乙個帶有頭結點 head 的非空單鏈表,返回鍊錶的中間結點。如果有兩個中間結點,則返回第二個中間結點。示例 1 輸入 1,2,3,4,5 輸出 此列表中的結點 3 序列化形式 3,4,5 返回的結點值為 3 測評系統對該結點序列化表述是 3,4,5 注意,我們返回了乙個 listnode ...
LeetCode 鍊錶 鍊錶的中間節點
給定乙個帶有頭結點 head 的非空單鏈表,返回鍊錶的中間結點。如果有兩個中間結點,則返回第二個中間結點。示例 輸入 1,2,3,4,5 輸出 此列表中的結點 3 序列化形式 3,4,5 返回的結點值為 3 測評系統對該結點序列化表述是 3,4,5 注意,我們返回了乙個 listnode 型別的物件...