鍊錶問題 刪除鍊錶的中間節點和a b處的節點

2021-08-10 02:51:44 字數 1163 閱讀 4727

問題描述

給定鍊錶的頭節點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 型別的物件...