tft每日頭條

 > 圖文

 > 鍊表中删除重複的元素

鍊表中删除重複的元素

圖文 更新时间:2024-08-12 13:20:04

鍊表中删除重複的元素?删除給出鍊表中的重複元素(鍊表中元素從小到大有序),使鍊表中的所有元素都隻出現一次,今天小編就來聊一聊關于鍊表中删除重複的元素?接下來我們就一起去研究一下吧!

鍊表中删除重複的元素(牛客網高頻算法題系列-BM15-删除有序鍊表中重複的元素-I)1

鍊表中删除重複的元素

牛客網高頻算法題系列-BM15-删除有序鍊表中重複的元素-I題目描述

删除給出鍊表中的重複元素(鍊表中元素從小到大有序),使鍊表中的所有元素都隻出現一次

原題目見:删除有序鍊表中重複的元素-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每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved