1.基础问题
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 :
输入: 1->1->2
输出: 1->2
2.算法
这里起初想法就是想着两个节点两个节点的比较以上述例子为例子。首先两个指针P和Q指向两个1,比较两个指针的值,发现相同;
此时将Q所在的这一个节点断开,P指向的节点不变,将Q指向下一节点继续比较:
直至Q指向链表末端:
/**
* 链表节点定义
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution83 {
public ListNode deleteDuplicates(ListNode head) {
//边界条件
if(head==null ||head.next==null)
return head;
ListNode temp=head.next,pre=head;//前后节点
while(temp!=null) {
//前后节点进行判断,如果相等,则进行链表重链接操作