您的位置:首页 > 其它

删除排序链表中的重复元素

2016-07-09 09:05 543 查看

题目

给定一个排序链表,删除所有重复的元素每个元素只留下一个。

样例

给出 1->1->2->null,返回 1->2->null

给出 1->1->2->3->3->null,返回 1->2->3->null

解题

加一个头结点

链表有序,找到不相等的时候,删除中间结点

两两比较是否相同进行删除

/**
* Definition for ListNode
* public class ListNode {
*     int val;
*     ListNode next;
*     ListNode(int x) {
*         val = x;
*         next = null;
*     }
* }
*/
public class Solution {
/**
* @param ListNode head is the head of the linked list
* @return: ListNode head of linked list
*/
public static ListNode deleteDuplicates(ListNode head) {
// write your code here
ListNode curHead = new ListNode(-1); // 定义头结点
curHead.next = head;
while(head!=null){
if(head.next!=null && head.val == head.next.val){ // 遇到相同元素删除
head.next = head.next.next;
}else
head = head.next;

}
return curHead.next;
}
}


删除多个的方式

只需修改上面的if语句

/**
* Definition for ListNode
* public class ListNode {
*     int val;
*     ListNode next;
*     ListNode(int x) {
*         val = x;
*         next = null;
*     }
* }
*/
public class Solution {
/**
* @param ListNode head is the head of the linked list
* @return: ListNode head of linked list
*/
public static ListNode deleteDuplicates(ListNode head) {
// write your code here
ListNode curHead = new ListNode(-1); // 定义头结点
curHead.next = head;
while(head!=null){
while(head.next!=null && head.val == head.next.val){ // 遇到相同元素删除
head.next = head.next.next;
}
head = head.next;

}
return curHead.next;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: