編寫**,以給定值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...