删除有序链表中重复的元素-I_牛客题霸_牛客网 (nowcoder.com)

/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
class Solution {
public:
/**
*
* @param head ListNode类
* @return ListNode类
*/
ListNode* deleteDuplicates(ListNode* head) {
// write code here
if(head == nullptr || head->next ==nullptr) return head;
ListNode* cur = head;
while(cur != nullptr && cur -> next != nullptr){
if(cur->val == cur->next->val){
cur->next = cur->next->next;
}else cur = cur->next;
}
return head;
}
};
- 时间复杂度:O(n),其中n为链表长度,遍历一次链表
- 空间复杂度:O(1),常数级指针变量使用,没有使用额外的辅助空间
该代码实现了一个C++类Solution,包含一个方法deleteDuplicates,用于删除有序链表中的重复元素。方法通过遍历链表,当遇到相等的连续节点值时,跳过重复节点,保持链表有序。时间复杂度为O(n),空间复杂度为O(1)。

被折叠的 条评论
为什么被折叠?



