剑指offer面试题18:删除链表中重复的节点-java
来源:互联网 发布:mysql统计不重复数据 编辑:程序博客网 时间:2024/06/05 19:19
题目:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
思路:用递归删除,遇到相同的往后走,返回第一个不相同的节点
public class DeleteDuplication { public ListNode deleteDuplication(ListNode head){ // 只有0个或1个结点,则返回 if (head ==null||head.next==null){ return head; } // 当前结点是重复结点 if (head.val == head.next.val){ ListNode pNode = head.next; while (pNode != null && pNode.val == head.val){ // 跳过值与当前结点相同的全部结点,找到第一个与当前结点不同的结点 pNode = pNode.next; } // 从第一个与当前结点不同的结点开始递归 return deleteDuplication(pNode); } else { // 当前结点不是重复结点,保留当前结点,从下一个结点开始递归 head.next = deleteDuplication(head.next); return head; } } public static void main(String[] args){ ListNode a = new ListNode(1); ListNode b = new ListNode(2); ListNode c = new ListNode(3); ListNode d = new ListNode(3); ListNode e = new ListNode(4); ListNode f = new ListNode(4); ListNode g = new ListNode(5); a.next=b; b.next=c; c.next=d; d.next=e; e.next=f; f.next=g; DeleteDuplication A = new DeleteDuplication(); ListNode head = A.deleteDuplication(a); System.out.print(head.val); }}
阅读全文
0 0
- 【剑指offer】面试题18:删除链表中重复的节点
- 剑指offer面试题18:删除链表中重复的节点-java
- 《剑指Offer》面试题57:删除链表中重复的节点
- 剑指offer-面试题57:删除链表中重复的结点
- 剑指offer--面试题57:删除链表中重复的结点
- 剑指offer 面试题57 删除链表中重复的结点
- 剑指offer-面试题57-删除链表中重复的结点
- 剑指offer 面试题57 删除链表中重复的结点
- 【剑指Offer】面试题57:删除链表中重复的结点
- 剑指offer面试题57 删除链表中重复的结点
- 剑指offer面试题[57]-删除链表中重复的结点
- 【剑指Offer】面试题57:删除链表中重复的结点
- 剑指offer面试题18:删除链表的节点-java
- 剑指offer-----删除链表中重复的节点(java版)
- 剑指offer-删除链表中重复的节点
- 剑指offer-----删除链表中重复的 节点
- 《剑指offer》删除链表中重复的节点
- 剑指Offer--删除链表中重复的节点
- JavaScript——鼠标滑过事件
- VC保证应用程序只有一个实例在运行
- 书籍-分布式系统常用技术及案例分析
- Collection和map
- SSD的安装配置和测试以及自己遇到的一些坑
- 剑指offer面试题18:删除链表中重复的节点-java
- 闪屏页面
- 242. Valid Anagram的C++解法
- 1
- 汇编-十进制输入输出
- 时间与日期处理
- fiddler APP
- Base64
- 大型网站架构系列:负载均衡详解