【LC刷题】DAY02:24 19 142

【LC刷题】DAY02:24 19 142

24. 两两交换链表中的节点 link

/**
 * 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* swapPairs(ListNode* head) {
        ListNode* dummyHead  = new ListNode(0);
        dummyHead->next = head;
        ListNode* temp = dummyHead;
        while(temp->next!=nullptr && temp->next->next != nullptr){
            ListNode *node1 = temp->next;
            ListNode *node2 = node1->next;
            temp->next = node2;
            node1->next = node2->next;
            node2 -> next = node1;
            temp = node1;
        }

        return dummyHead->next;
    }
};

19.删除链表的倒数第N个节点 link

class Solution {
public:
    int getLength(ListNode* head) {
        int length = 0;
        while (head) {
            ++length;
            head = head->next;
        }
        return length;
    }

    ListNode* removeNthFromEnd(ListNode* head, int n) {
        ListNode* dummy = new ListNode(0, head);
        int length = getLength(head);
        ListNode* cur = dummy;
        for (int i = 1; i < length - n + 1; ++i) {
            cur = cur->next;
        }
        cur->next = cur->next->next;
        ListNode* ans = dummy->next;
        delete dummy;
        return ans;
    }
};

面试题 02.07. 链表相交 link

class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        unordered_set<ListNode *> visited;
        ListNode *temp = headA;
        while (temp != nullptr) {
            visited.insert(temp);
            temp = temp->next;
        }
        temp = headB;
        while (temp != nullptr) {
            if (visited.count(temp)) {
                return temp;
            }
            temp = temp->next;
        }
        return nullptr;
    }
};

142.环形链表II

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode *detectCycle(ListNode *head) {
        if (head == NULL)
            return NULL;
        ListNode *fast, *slow;
        fast = head;
        slow = head->next;
        if(fast == slow){
            return head;
        }

        while(fast->next!=NULL){
            fast=fast->next;
            slow = head;
            while(slow != fast || slow == fast->next ){
                if(fast->next == slow){
                    return slow;
                }
                slow=slow->next;
                
            }
        }
        return NULL;
    }
};

相关推荐

  1. LCDAY02:24 19 142

    2024-06-09 02:40:03       25 阅读
  2. LCDAY03:242 349 202 1

    2024-06-09 02:40:03       35 阅读
  3. LCDAY07:344 541 54

    2024-06-09 02:40:03       32 阅读
  4. LCDAY08:151 55 28 459

    2024-06-09 02:40:03       36 阅读
  5. LCDAY24:122 55 45 1005

    2024-06-09 02:40:03       34 阅读
  6. 二分查找算法记录 -LC34

    2024-06-09 02:40:03       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-09 02:40:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-09 02:40:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-09 02:40:03       82 阅读
  4. Python语言-面向对象

    2024-06-09 02:40:03       91 阅读

热门阅读

  1. 二叉树的前序便利,中序遍历,后序遍历

    2024-06-09 02:40:03       28 阅读
  2. AI学习指南机器学习篇-决策树基本原理

    2024-06-09 02:40:03       26 阅读
  3. 利用Pandas进行数据清洗与过滤:Python实战指南

    2024-06-09 02:40:03       36 阅读
  4. 树莓派【Raspberry Pi-64位】3b+,Pi4J 2.0入门

    2024-06-09 02:40:03       32 阅读
  5. Vue3相关语法内容,组件传值

    2024-06-09 02:40:03       32 阅读
  6. Linux

    2024-06-09 02:40:03       27 阅读
  7. 前端如何封装自己的npm包并且发布到npm注册源

    2024-06-09 02:40:03       36 阅读
  8. Bean的作用域

    2024-06-09 02:40:03       34 阅读
  9. 对硬盘的设想2:纸存,硬指针,软指针

    2024-06-09 02:40:03       32 阅读