链表
是链表啊
想名字多费事
编程小白入驻
展开
-
两数相加-2
思路: /** * 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), nex.原创 2021-08-25 15:32:56 · 84 阅读 · 0 评论 -
判断链表是否有环
1、简单判断链表是否有环 class Solution { public: bool hasCycle(ListNode *head) { ListNode* slow=head; ListNode* fast=head; while(fast!=nullptr&&fast->next!=nullptr){ fast=fast->next->next;原创 2021-08-08 15:22:07 · 75 阅读 · 0 评论 -
重排链表!
思路 1、首先利用快慢指针,将链表分成两段。 2、将slow指针对应的后半段链表进行反转(反转链表操作) 3、利用归并排序的思想,合并两个链表。(tips:利用dummy节点可以提高效率) /* * @lc app=leetcode.cn id=143 lang=cpp * * [143] 重排链表 */ // @lc code=start /** * Definition for singly-linked list. * struct ListNode { * int val;.原创 2021-08-03 12:15:17 · 120 阅读 · 0 评论 -
环形链表
快慢指针法 分别定义 fast 和 slow指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。 class Solution { public: ListNode *detectCycle(ListNode *head) { ListNode* fast=head; ListNode* slow=head; while(fast!=nullptr&.原创 2021-05-04 14:05:01 · 62 阅读 · 0 评论 -
删除链表的倒数第N个节点
/** * 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.原创 2021-05-04 13:12:59 · 65 阅读 · 0 评论 -
反转链表(TX)
思路 首先我们想要的效果图如下 首先定义一个cur指针,指向头结点,再定义一个pre指针,初始化为null。 然后就要开始反转了,首先要把 cur->next 节点用tmp指针保存一下 因为接下来要要处理该节点,也就是改变 cur->next 的指向了,将cur->next 指向pre ,然后cur要移动到下一位置继续处理节点 再接下来,就是循环走如下代码逻辑了,继续移动pre和cur指针。 最后,cur 指针已经指向了null,循环结束,链表也反转完毕了。此时我们return pre.原创 2021-05-04 10:33:41 · 81 阅读 · 0 评论 -
设计链表
class MyLinkedList { public: // 定义链表节点结构体 struct ListNode{ int val; struct ListNode* next; ListNode(int x) :val(x),next(nullptr) {} }; // 初始化链表 MyLinkedList() { m_dummy= new ListNode(0);// 这里定义的头结点 是一个虚拟头结点原创 2021-05-04 09:07:30 · 65 阅读 · 0 评论 -
移除链表元素--虚拟头结点
直接使用原来的链表来进行删除操作。 class Solution { public: ListNode* removeElements(ListNode* head, int val) { if(head==NULL) return NULL; while(head!=NULL&&head->val==val){ ListNode* temp=head; head=head->nex.原创 2021-05-03 20:01:57 · 82 阅读 · 0 评论