** 删除有序链表中重复的元素-I**

图解:

链接

思路:

1.判断一下链表是否为空,如果是空,就不需要去重,直接返回null

2.当当前的节点和下一个节点不为null的时候

3.判断一下如果当前的节点等于下一个节点,就让当前节点指向下下个节点

4.否则就直接指向下一个节点

代码:

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    public ListNode deleteDuplicates (ListNode head) {
        //判断一下如果输入的链表为空,那么就不需要进行去重操作,直接返回null
        if(head==null){
            return null;
        }
        ListNode cur=head;
        //当当前的节点不为null并且cur.next不为null,则继续循环
        //如果发现当前的节点的值等于下一个节点的值,那么就将当前节点指向下下个节点,否则就直接指向下一个节点
        while(cur!=null&&cur.next!=null){
            if(cur.val==cur.next.val){
                cur.next=cur.next.next;
            }else{
                cur=cur.next;
            }
        }
        return head;
    }
}