My leetcode

链表

链表空间不一定保证连续,为临时分配

返回值为链表节点

画图方法理清逻辑

边界条件要求严格

链表为空或链表长度为1

可以使用额外数据结构来简化调整过程,但最优解往往不需要使用额外数据结构

技巧

  1. 构建新的不参与运算的头节点

    ListNode* dummy = new ListNode(-1)//用-1是因为node没有无参构造
    dummy->next = head;
    ...
    return dummy->next;
    
  2. 画图! 举例!

简单难度

删除排序链表中的重复元素 (重复的保留一个)

leetcode 203

ListNode* deleteDuplicates(ListNode* head) {
    if (head == nullptr || head->next == nullptr) return head;
    head->next = deleteDuplicates(head->next);
    return head->val == head->next->val?head->next:head;                    
}

移除给定值的所有链表元素

leetcode 83

ListNode* removeElements(ListNode* head, int val) {
     if (head ==

你可能感兴趣的:(代码)