算法系列之-删除重复出现的节点
2018-01-25 10:20
295 查看
package it.list; import java.util.HashSet; import java.util.Set; /** * @项目名称:util * @类名称:DelNode @类描述:删除重复出现的节点 * * @author 赵建银 * @date 2018年1月25日 * @time 上午9:41:58 * @version 1.0 */ public class DelNode { /** * * 删除重复出现的节点 * * @param head * @return */ public static void DelNode1(Node head) { if (head == null) { return; } Set<Integer> set = new HashSet<Integer>(); set.add(head.value); Node pre = head; Node cur = head.next; while (cur != null) { if (set.contains(cur.value)) { pre.next = cur.next; } else { set.add(cur.value); pre = pre.next; } cur = cur.next; } } public static void DelNode2(Node head) { if (head == null) { return; } Node cur = head; while (cur != null) { Node pre = cur; Node next = cur.next; while (next != null) { if (cur.value == next.value) { pre.next = next.next; }else { pre = pre.next; } next = next.next; } cur = cur.next; } } public static void main(String[] args) { Node node = new Node(1); Node node2 = new Node(2); Node node3 = new Node(3); Node node4 = new Node(4); Node node5 = new Node(5); Node node6 = new Node(5); Node node7 = new Node(5); node.next = node2; node2.next = node3; node3.next = node4; node4.next = node5; node5.next = node6; node6.next = node7; DelNode2(node); while (node != null) { System.out.print(node.value + "->"); node = node.next; } } }
相关文章推荐
- [算法]删除无序单链表中值重复出现的节点
- 笔试算法题(18):常数时间删除节点 & 找到仅出现一次的两个数字
- 剑指offer系列之55:删除链表汇总重复的节点
- 算法系列之-删除和当前数字相同的节点
- 【剑指offer-解题系列(57)】删除链表中重复的节点
- [算法] 定义一个函数,删除字符串中所有重复出现的字符。
- 剑指offer系列之五十八:删除链表中重复的节点
- 算法优解(8)-删除无序单链表中重复出现的节点
- 链表问题---删除无序单链表中值重复出现的节点
- 删除无序链表中值重复出现的节点
- 【算法系列】使用LINQ来检测和删除重复的文件
- 算法分析---删除字符串中出现次数最少的字符
- LeetCode 刷题: 删除已排序链表中的重复节点
- 【白话经典算法系列之十七】 数组中只出现一次的数
- 算法系列——在O(1)时间内删除链表结点
- 算法系列——数组中只出现一次的数字
- 算法练习五 红黑树下 节点删除(转)
- 删除链表中重复的节点
- 数据结构和算法设计专题之---单链表中在指定的节点前面插入以及删除一个节点
- 删除排序链表的所有重复节点