【LeetCode】第83题——删除排序链表中的重复元素(难度:简单)
题目描述
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
-
示例 1:
输入: 1->1->2
输出: 1->2 -
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
因为是排序链表,因此只需判断当前节点的值与下一个节点(如果有的话)的值是否相等即可。
如果相等,则把当前节点.next.next赋值给当前节点.next(当前节点.next.next为null也无妨,把null赋值给当前节点.next会直接退出循环)。
当然如果链表是无序的,则可以考虑new一个新的空白数组,把出现过的数字add其中,如果当前节点.next.val出现在数组中,则把当前节点.next.next赋值给当前节点.next。
代码详解
方法一(适合有序链表)
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
// 空白链表或只有一个元素的链表直接返回其本身即可
if (head == null || head.next == null)