题解 | #牛群排列去重#【Java】
牛群排列去重
https://www.nowcoder.com/practice/8cabda340ac6461984ef9a1ad66915e4?tpId=354&tqId=10591390&ru=/exam/oj/ta&qru=/ta/interview-202-top/question-ranking&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D354
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.返回头结点
本题使用编程语言:Java
高频面试算法题解 文章被收录于专栏
高频面试算法题解,每天一小步,人生一大步,跟着一起刷起来!

