鍊錶分割 刪除 回文等

2021-09-29 07:54:06 字數 2737 閱讀 3697

編寫**,以給定值x為基準將鍊錶分割成兩部分,所有小於x的結點排 在大於或等於x的結點之前

package demo;

public

class

partlist

else

if(phead.next == null)

listnode smallhead =

newlistnode()

; listnode small = smallhead;

listnode largehead =

newlistnode()

; listnode large = largehead;

while

(phead != null)

else

phead = phead.next;

}//如果large的最後乙個節點不是原節點的最後乙個,那麼就會成環

//所以要將儲存大值的鍊錶末尾置為null

large.next = null;

//合併兩個鍊錶

small.next = largehead.next;

return smallhead.next;

}}

2.在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點, 重複的結點不保留,返回煉表頭指標 ,例如:1 2 2 3 4 結果:1 3 4

public

class

delete

listnode newhead =

newlistnode()

; newhead.next = phead;

listnode prev = newhead;

listnode node = prev.next;

while

(node != null)

prev.next = node.next;

node = node.next;

}else

}return newhead.next;

}}

3.判定鍊錶的回文結構

比如:1 2 2 1 、1 2 3 3 2 1 左右對稱,就是回文結構,返回ture

package demo;

public

class

plalindrome

else

if(a.next == null)

//得到鍊錶長度

int len =

size

(a);

//b用來指向鍊錶中間節點位置

listnode b = a;

for(

int i =

0; i < len /

2; i++

) listnode newhead =

newlistnode(-

1);//頭插法

while

(b != null)

//進行比較

while

(newhead != null)

newhead = newhead.next;

a = a.next;

}return

true;}

public

intsize

(listnode a)

return size;

}}

4.輸入兩個鍊錶,找出它們的第乙個公共結點

public

class

intersectionlist

//獲取兩個鍊錶長度

int lena =

size

(heada)

;int lenb =

size

(headb)

;int temp =0;

if(lena < lenb)

while

(heada != null || headb != null)

heada = heada.next;

headb = headb.next;}}

else

while

(heada != null || headb != null)

heada = heada.next;

headb = headb.next;}}

return null;

}public

intsize

(listnode node)

return size;

}}

5.給定乙個鍊錶,判斷鍊錶中是否有環

使用快慢指標,快指標一次走兩步,慢指標一次走一步,如果鍊錶不帶 環,快指標一定先到達末尾;如果鍊錶帶環,快指標一定和慢指標重合

public

boolean

hascycle

(listnode head)

}return

false

;}

6.給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。 如果鍊錶無環,則返回 null

public listnode detectcycle

(listnode head)

fast = fast.next;

slow = slow.next;}}

}return null;

}

鍊錶 回文鍊錶

在leetcode上有兩個題 234.回文鍊錶 面試題 02.06.回文鍊錶 請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?遍歷一遍鍊錶得到值的陣列 判斷陣列是...

初級 鍊錶 回文鍊錶

題目 請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?思路 原思路 將鍊錶遍歷一遍,存入陣列,但空間複雜度為o n 不符合要求 正確思路 用快慢陣列找出鍊錶的中間...

leetcode 鍊錶 回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?head null 空鍊錶,回文,返回true head.next null 只有乙個節點的列表,回文,返回tru...