import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* public ListNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类
* @return ListNode类
*/
public ListNode deleteDuplicates(ListNode head) {
ListNode cur = head;
// 循环条件: cur或者cur.next只要有一个不成立,说明不用再进行去重
// 为什么要判断两个条件同时成立,因为if语句判断cur.val和cur.next.val 而null.val是没有意义的
while(cur != null && cur.next != null) {
// 如果相等 走两步
if(cur.val == cur.next.val) {
cur.next = cur.next.next;
} else {
// 如果不相等走一步
cur = cur.next;
}
}
// 返回头结点即可
return head;
}
}
本题知识点:
1.链表的遍历
2.掌握链表遍历的循环条件,为什么要cur.next和cur!=null
3.掌握链表前驱结点和后继结点的连接
本题解题思路:
1.循环条件: cur或者cur.next只要有一个不成立,说明不用再进行去重
2.为什么要判断两个条件同时成立,因为if语句判断cur.val和cur.next.val 而null.val是没有意义的
3.如果相等 走两步
4.如果不相等走一步
5.返回头结点

京公网安备 11010502036488号