移除未排序連結串列中的重複節點演算法實現
分析:
想要移除重複節點,首先要知道哪些節點是重複的。我們這裡使用散列表解決這個問題。
演算法一
連結串列節點類
public class LinkedListNode {
LinkedListNode next = null;//指向的下一個連結串列
public int data;
}
刪除重複節點方法
public static void deleteDups(LinkedListNode n){
Hashtable<Object,Object> table = new Hashtable<Object,Object >();
LinkedListNode previous = null;
while(n!=null){
if(table.containsKey(n.data)){
previous.next = n.next;
}else{
table.put(n.data,true);
previous = n;
}
n = n.next;
}
}
演算法二(不使用緩衝區)
如不借助額外的緩衝區,可以使用兩個指標來迭代,current迭代訪問整個連結串列,runner用於檢查後續的節點是否重複。
演算法的中心思想是雙層遍歷移除。
public static void deleteDups2(LinkedListNode head){
if(head==null){
return;
}
LinkedListNode current = head;
while(current!=null){
/*移除後續值相同的所有節點*/
LinkedListNode runner = current;
while (runner.next!=null){
if(runner.next.data == current.data){
runner.next = runner.next.next;
}else{
runner = runner.next;
}
}
current = current.next;
}
}
相關推薦
移除未排序連結串列中的重複節點演算法實現
分析: 想要移除重複節點,首先要知道哪些節點是重複的。我們這裡使用散列表解決這個問題。 演算法一 連結串列節點類 public class LinkedListNode { LinkedListNode next = null;//指向的下一個
CCI 2.1 移除未排序連結串列中的重複節點
編寫程式碼,移除未排序連結串列中的重複節點。 進階, 如果不得使用臨時緩衝區,該怎麼解決? package test; import java.util.HashSet; public class RemoveDup { //利用HashSet public No
leetcode83:刪除排序連結串列中重複元素
思想: 由於連結串列是排序的,只要判斷head和head.next的val值是否相等,若相等則head.next = head.next.next 反之head = head.next 為了返回,將head暫存dummy # Definition for singly-
LeetCode(Remove Duplicates from Sorted List) 兩道刪除排序連結串列中重複數字
題目要求: Given a sorted linked list, delete all duplicates such that each element appear only once. For example, Given 1->1->2, ret
刪除排序連結串列中重複的結點
題目是如此的清楚,以至於不會造成誤解。現將要點羅列如下: 連結串列為空,不必多說; 如果恰恰是頭結點與頭結點的後一個重複了,這種情況是可以發生的,那頭結點就要被刪除,另選新的結點作為頭
LeetCode 83. 刪除排序連結串列中的重複元素(Remove Duplicates from Sorted List)
題目描述 給定一個排序連結串列,刪除所有重複的元素,使得每個元素只出現一次。 示例1: 輸入: 1->1->2 輸出: 1->2 示例2: 輸入: 1->1->2->3->3 輸出: 1->2->3 解題思
[Leetcode] 82. 刪除排序連結串列中的重複元素 II java
給定一個排序連結串列,刪除所有含有重複數字的節點,只保留原始連結串列中 沒有重複出現 的數字。 示例 1: 輸入: 1->2->3->3->4->4->5 輸出: 1->2->5 示例
LeetCode 83 刪除排序連結串列中的重複元素 ---python
給定一個排序連結串列,刪除所有重複的元素,使得每個元素只出現一次。 示例 1: 輸入: 1->1->2 輸出: 1->2 示例 2: 輸入: 1->1->2->3->3 輸出: 1->2->3 # D
Leetcode---83. 刪除排序連結串列中的重複元素
給定一個排序連結串列,刪除所有重複的元素,使得每個元素只出現一次。 示例 1: 輸入: 1->1->2 輸出: 1->2 示例 2: 輸入: 1->1->2->3->3 輸出: 1->2->3 -----
LeetCode-刪除排序連結串列中的重複元素
.title { text-align: center; margin-bottom: .2em } .subtitle { text-align: center; font-size: medium; font-weight: bold; margin-top: 0 } .todo { font-famil
LeetCode 83 —— 刪除排序連結串列中的重複元素
1. 題目 2. 解答 從前向後遍歷連結串列,如果下一個結點的值和當前結點的值相同,則刪除下一個結點,否則繼續向後遍歷。 /** * Definition for singly-linked list. * struct ListNode { * int val; * Lis
17、刪除排序連結串列中的重複元素
給定一個排序連結串列,刪除所有重複的元素,使得每個元素只出現一次。 示例 1: 輸入: 1->1->2 輸出: 1->2 示例 2: 輸入: 1->1->2->3->3 輸出: 1->2->3 我的未優化的程式碼 pu
LeetCode 82 ——刪除排序連結串列中的重複元素 II
1. 題目 2. 解答 新建一個連結串列,並新增一個哨兵結點,從前向後開始遍歷連結串列。 如果下一個結點的值和當前結點的值相等,則迴圈向後遍歷直到找到一個和當前結點值不相等的結點; 反之,如果下一個結點的值和當前結點的值不相等,此值即為原始連結串列中
LeetCode83. 刪除排序連結串列中的重複元素
題目來源: https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/description/ 題目描述: 由於該題比較簡單,就直接寫程式碼了。程式碼如下: class Solution
在一個排序的連結串列中,存在重複的結點,請刪除該連結串列中重複的結點,重複的結點不保留,返回連結串列頭指標。 例如,連結串列1->2->3->3->4->4->5 處理後為 1->2->5
題目描述 在一個排序的連結串列中,存在重複的結點,請刪除該連結串列中重複的結點,重複的結點不保留,返回連結串列頭指標。 例如,連結串列1->2->3->3->4->4->5 處理後為 1->2->5 /* 思路:由於是排序連結串列,只需判斷
leet83刪除排序連結串列中的重複元素
給定一個排序連結串列,刪除所有重複的元素,使得每個元素只出現一次。 示例 1: 輸入: 1->1->2 輸出: 1->2 示例 2: 輸入: 1->1->2->3->3 輸出: 1->2->3 # Definition f
leetcode的python實現 刷題筆記83:刪除排序連結串列中的重複元素
給定一個排序連結串列,刪除所有重複的元素,使得每個元素只出現一次。 示例 1: 輸入: 1->1->2 輸出: 1->2 示例 2: 輸入: 1->1->2->3->3 輸出: 1->2->3 class
leetcode 刪除排序連結串列中的重複元素
題目描述: 給定一個排序連結串列,刪除所有重複的元素,使得每個元素只出現一次。 示例 1: 輸入: 1->1->2 輸出: 1->2 示例 2: 輸入: 1->1->2->3->3 輸出: 1->2->3
LeetCode83--刪除排序連結串列中的重複元素
1 ''' 2 給定一個排序連結串列,刪除所有重複的元素,使得每個元素只出現一次。 3 示例 1: 輸入: 1->1->2 輸出: 1->2 4 示例 2: 輸入: 1->1->2->3->3 輸出: 1->2->3 5 '
LeetCode83 刪除排序連結串列中的重複元素
給定一個排序連結串列,刪除所有重複的元素,使得每個元素只出現一次。 示例 1: 輸入: 1->1->2 輸出: 1->2 示例 2: 輸入: 1->1->2->3->3 輸出: 1->2->3 /**