数据结构与算法笔记
K48L
这个作者很懒,什么都没留下…
展开
-
链表-旋转链表
题目给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。示例 1:输入:head = [1,2,3,4,5], k = 2输出:[4,5,1,2,3]示例 2:输入:head = [0,1,2], k = 4输出:[2,0,1]代码//第一次循环先把链表头尾相连,获得一个环,得到链表长度len//旋转到断点后断开环,并且修改头结点位置struct ListNode* rotateRight(struct ListNode* head, int k){原创 2021-09-06 00:53:51 · 223 阅读 · 0 评论 -
链表-奇偶链表
题目奇偶链表给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2->4->NULL示例 2:输入: 2->1->3->5->6原创 2021-09-06 00:11:14 · 190 阅读 · 0 评论 -
链表-删除倒数第n个结点
题目给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点;代码struct ListNode* removeNthFromEnd(struct ListNode* head, int n){ struct ListNode *fast=head; struct ListNode *slow=head; struct ListNode *front=head; if(head==NULL) return head; if(head->next=原创 2021-09-05 22:14:10 · 66 阅读 · 0 评论 -
链表-相交链表
题目给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构 。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Intersected at ‘8’解释:相交原创 2021-09-05 22:09:39 · 90 阅读 · 0 评论 -
链表-判断环形指针
标题如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问题吗?示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解原创 2021-09-05 21:52:47 · 111 阅读 · 0 评论