LeetCode83. 删除排序链表中的重复元素
Posted mx_info
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode83. 删除排序链表中的重复元素相关的知识,希望对你有一定的参考价值。
LeetCode83. 删除排序链表中的重复元素
题目说明
/**
*
* 存在一个按升序排列的链表,给你这个链表的头节点 head ,
* 请你删除所有重复的元素,使每个元素 只出现一次 。
*
* 返回同样按升序排列的结果链表。
*
*
*/
思路分析
- 删除链表中的重复元素,因为链表是有序的因此只需要一次遍历链表即可
- 因为头节点不能动,因此需要辅助指针用于遍历
- 在遍历链表时,判断当前节点元素的值是否等于下一节点元素的值,如果等于,则将当前节点的下一指针域指向下一节点的后一节点,如果不等于,则指针后移一位,继续判断后面的节点
- 较为简单,源码见下
源码及分析
/**
*
* @param head 头节点
* @return 返回删除重复元素后的链表
*/
public ListNode deleteDuplicates(ListNode head) {
//判断节点是否为空或者是否只有一个节点
if (head == null || head.next == null){
return head;
}
//定义辅助指针用于遍历链表
ListNode cur = head;
while (true){
//循环遍历结束的条件
if (cur.next == null){
break;
}
//如果当前节点的值等于下一节点的值,则将当前节点指向下一节点的下一节点
if (cur.val == cur.next.val){
cur.next= cur.next.next;
}else {
//如果不等于的话,cur直接后移一位
cur = cur.next;
}
}
return head;
}
以上是关于LeetCode83. 删除排序链表中的重复元素的主要内容,如果未能解决你的问题,请参考以下文章