leetcode 02 03 鍊錶問題題解

2021-10-24 14:00:45 字數 1372 閱讀 6747

題目描述

解法一:逐一比較,取出較小的。定義兩個指標,創造新鍊錶的頭節點,讓其分別只想兩個鍊錶,比較其大小取出較小的那個值,讓其等於新鍊錶的結點。這種解法是創造了新鍊錶,並沒有充分利用鍊錶的特性。

listnode* mergetwolists(listnode* l1, listnode* l2)

if((temp2 == null && temp1 != null))

listnode*temp = new listnode;

if (temp1->val <= temp2->val)

temp->val = temp2->val;

temp->next = null;

ll3->next = temp;

ll3 = temp;

temp2 = temp2->next;

}temp->val = temp1->val;

temp->next = null;

ll3->next = temp;

ll3 = temp;

temp1= temp1->next;

}else

temp->val = temp1->val;

temp->next = null;

ll3->next = temp;

ll3 = temp;

temp1 = temp1->next;

}temp->val = temp2->val;

temp->next = null;

ll3->next = temp;

ll3 = temp;

temp2 = temp2->next;}}

return l3->next;

}解法二:創造乙個頭節點,讓其作為合併後鍊錶的頭節點,定義兩個指標,分別指向原來兩個節點,比較其大小,誰小頭指標就指想誰,並且指標向後移動。

listnode* head = new listnode;

head->val = -1;

head->next = null;

listnode**pre = &head;

while (l1 != null | l2 != null)

else

*pre = (*pre)->next;

}

if (l1 == null)

if (l2 == null)

return head->next;

方法三;遞迴

子問題與原問題結構相同

if (l2 == null)

if (l1 == null)

if (l1->val < l2->val) 

else

leetcode 鍊錶 回文鍊錶

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

leetcode 鍊錶 回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2輸出 false示例 2 輸入 1 2 2 1輸出 true高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?思路 利用快慢指標找到中間節點,當快指標走到末尾時,慢指標指向中間節點 交中間節點之後的節點進行鍊錶反轉 設定指標p1從h...

分隔鍊錶(鍊錶 LeetCode)

題目鏈結 給你乙個鍊錶和乙個特定值 x 請你對鍊錶進行分隔,使得所有小於 x 的節點都出現在大於或等於 x 的節點之前。你應當保留兩個分割槽中每個節點的初始相對位置。示例 輸入 head 1 4 3 2 5 2,x 3 輸出 1 2 2 4 3 5維護兩個鍊錶,乙個鍊錶儲存比x小的結點,另乙個鍊錶儲...