题目1:删除有序链表中重复的元素
描述:删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次
例如:
给出的链表为1→1→2,返回1→2.
给出的链表为1→1→2→3→3,返回1→2→3.
package case57_DeleteDuplicatedListNode;
/**
* 题目:在一个排序的链表中,如何删除重复的结点?例如,在下图a中重复节点被删除之后,链表如b图所示。
*
* a: N1 ——————> N2 ——————> N3 ——————> N3 ——————> N4 ——————> N4 ——————> N5
*
* b: N1 ——————> N2 ——————> N5
*
* @author WangSai
*
*/
public class DeleteDuplicatedListNode {
/**
*
* @param head ListNode类
* @return ListNode类
*/
public ListNode deleteDuplicates (ListNode head) {
// write code here
if (null == head){
return head;
}
ListNode pre = head;
ListNode now = head.next;
while(now != null){
if (now.val == pre.val){
now = now.next;
} else {
pre.next = now;
pre = now;
now = now.next;
}
}
pre.next = now;
return head;
}
}
题目2:删除有序链表中重复的元素-II
描述:给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。
例如:
给出的链表为 1→2→3→3→4→4→5, 返回1→2→5.
给出的链表为1→1→1→2→3, 返回 2→3.