【每日一题】删除排序链表中的重复元素

发布时间:2024年01月14日

Tag

【遍历】【链表】【2024-01-14】


题目来源

83. 删除排序链表中的重复元素


解题思路

方法一:比较相邻两节点

思路

比较两个相邻的节点,如果下一个节点值和当前节点值一样,则跳过下一个节点将当前节点和下一个节点的下一个节点相连。

迭代比较相邻的节点,直到到达链表尾部。

算法

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
	ListNode *deleteDuplicates(ListNode* head) {
		if (!head) return head;
		ListNode *curr = head;
		while (curr->next) {
			if (curr->val == curr->next->val) {
				curr->next = curr->next->next;
			}
			else {
                curr = curr->next;
            }	
		}
		return head;
	}
};

复杂度分析

时间复杂度: O ( n ) O(n) O(n) n n n 是链表的长度。

空间复杂度: O ( 1 ) O(1) O(1)


写在最后

如果您发现文章有任何错误或者对文章有任何疑问,欢迎私信博主或者在评论区指出 💬💬💬。

如果大家有更优的时间、空间复杂度的方法,欢迎评论区交流。

最后,感谢您的阅读,如果有所收获的话可以给我点一个 👍 哦。

文章来源:https://blog.csdn.net/weixin_54383080/article/details/135579402
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。