鍊表中删除重複的元素?删除給出鍊表中的重複元素(鍊表中元素從小到大有序),使鍊表中的所有元素都隻出現一次,今天小編就來聊一聊關于鍊表中删除重複的元素?接下來我們就一起去研究一下吧!
删除給出鍊表中的重複元素(鍊表中元素從小到大有序),使鍊表中的所有元素都隻出現一次
原題目見:删除有序鍊表中重複的元素-I_牛客題霸_牛客網
解法一:鍊表遍曆首先,考慮特殊情況,如果鍊表為空或者隻有一個結點,不會有重複的元素,返回原鍊表。
否則,遍曆鍊表結點,判斷是否有重複的元素,處理過程如下:
使用pre記錄上一個未重複的結點,初始化為鍊表頭;
然後從鍊表的第二個結點next開始遍曆鍊表結點;
如果next和pre的值相同,則删除當前重複結點;
如果next和pre的值不相同,則更新pre的值。
遍曆完成後,鍊表的頭結點并沒有變化,返回頭結點即可。
代碼
public class Bm015 { /** * 删除有序鍊表中重複的元素-I * * @param head ListNode類 * @return ListNode類 */ public static ListNode deleteDuplicates(ListNode head) { // 如果鍊表為空或者隻有一個結點,不會有重複的元素,返回原鍊表 if (head == null || head.next == null) { return head; } // pre記錄上一個未重複的結點 // next為從第二個節點開始判斷是否有重複元素 ListNode pre = head, next = head.next; // 遍曆鍊表 while (next != null) { // 如果當前結點的值和pre的值相同,則要删掉當前結點,修改pre的next指針即可 if (pre.val == next.val) { pre.next = next.next; } else { // 如果當前結點未重複,則更新pre pre = next; } next = next.next; } return head; } public static void main(String[] args) { ListNode head = ListNode.testCase6(); System.out.println("原鍊表為"); ListNode.print(head); System.out.println("删除有序鍊表中重複的元素後的鍊表為"); ListNode.print(deleteDuplicates(head)); } }
1.01^{365} ≈ 37.7834343329 0.99^{365} ≈ 0.02551796445 相信堅持的力量!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!