代码随想录day4

news/2025/2/1 1:56:16/

24.两两交换链表:注意虚拟头节点的使用

ListNode* swapPairs(ListNode* head) {ListNode* dummy = new ListNode();dummy->next = head;ListNode* current = dummy;while(current->next != nullptr && current->next->next != nullptr){ListNode* tmp = current->next;ListNode* tmp1 = current->next->next->next;current->next = current->next->next;current->next->next = tmp;current->next->next->next = tmp1;current = current->next->next;}return dummy->next;}

19.删除链表中的倒数第N个结点:注意使用快慢指针,以及中间的间隔n的判断

ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* dummy = new ListNode();dummy->next = head;ListNode* fast = dummy;ListNode* slow = dummy;//先移动fast指针领先slow n+1 个位置while(n-- && fast != nullptr){fast = fast->next;}fast = fast->next;//同时移动fast,slow到fast抵达最后while(fast != nullptr){fast = fast->next;slow = slow->next;}//删除第N个需要用到的是第N-1个节点ListNode* tmp = slow->next;slow->next = tmp->next;delete(tmp);return dummy->next;}

面试题02.07链表相交://理解链表相交不是值相等,而是指向同一块区域

ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {ListNode* listA = headA;ListNode* listB = headB;int lenA = 0, lenB = 0;while(listA != nullptr){listA = listA->next;lenA++;}while(listB != nullptr){listB = listB->next;lenB++;}if(lenB > lenA){swap(headA, headB);swap(lenA, lenB);}int gap = lenA - lenB;listA = headA;listB = headB;while(gap--){listA = listA->next;}while(listA != nullptr && listB != nullptr){if(listA == listB){return listA;}else{listA = listA->next;listB = listB->next;}}return nullptr;}

142.环形链表II://需理解为甚么fast比slow快1就能在环中相遇,什么时候fast追上slow,以及追上后如何获取环的入口位置

ListNode *detectCycle(ListNode *head) {ListNode* fast = head;ListNode* slow = head;while(fast != nullptr && fast->next != nullptr){fast = fast->next->next;slow = slow->next;//找到fast与slow在环中的相遇点if(fast == slow){ListNode* left = head;ListNode* right = fast;while(left != nullptr && right != nullptr){if(left == right){return left;}left = left->next;right = right->next;}}}return nullptr;}


http://www.ppmy.cn/news/1568299.html

相关文章

C#设置winform窗体自动适应不同分辨率的电脑

C#设置winform窗体自动适应不同分辨率的电脑 文章已被社区收录 加入社区 问题背景: 用winform开发了一个上位机软件,本机的台式开发电脑是宽屏的,上位机软件的显示效果良好,而在笔记本电脑上使用上位机软件时,出现了界…

STM32 TIM定时器配置

TIM简介 TIM(Timer)定时器 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中断功能&#xff…

Perl语言的语法糖

Perl语言的语法糖 引言 在编程语言的世界中,语法糖是一种极其重要的概念。它是指那些通过简单的语法或特定格式来增强语言可读性的功能,不仅可以简化代码,还能使得代码更加优雅。在众多编程语言中,Perl以其灵活性和强大的文本处…

性能测试丨分布式性能监控系统 SkyWalking

软件测试领域,分布式系统的复杂性不断增加,如何保证应用程序的高可用性与高性能,这是每一个软件测试工程师所面临的重大挑战。幸运的是,现在有了一些强大的工具来帮助我们应对这些挑战,其中之一便是Apache SkyWalking。…

python flask中使用or查询和and查询,还有同时使用or、and的情况

在 Flask 中处理数据库查询时,通常会结合使用 ORM 工具,例如 SQLAlchemy。以下是 or 查询、and 查询以及两者同时使用的示例。 文章目录 基础准备1. 使用 or_ 查询2. 使用 and_ 查询3. 同时使用 or_ 和 and_4. 更加复杂的嵌套查询 基础准备 假设有一个…

K8S-标签管理,探针,名称空间,rc控制器,svc服务发现

1. k8s的两类API: 响应式:可以理解为基于命令行的方式创建资源。换句话说,就是不通过配置文件创建资源 声明式:可以理解为通过资源清单的方式创建资源。换句话说,就是通过配置文件创建资源 1. 标签管理 ## 创建资源清单 kind: Po…

我的毕设之路:(2)系统类型的论文写法

一般先进行毕设的设计与实现,再在现成毕设基础上进行描述形成文档,那么论文也就成形了。 1 需求分析:毕业设计根据开题报告和要求进行需求分析和功能确定,区分贴合主题的主要功能和拓展功能能,删除偏离无关紧要的功能…

0.91英寸OLED显示屏一种具有小尺寸、高分辨率、低功耗特性的显示器件

0.91英寸OLED显示屏是一种具有小尺寸、高分辨率、低功耗特性的显示器件。以下是对0.91英寸OLED显示屏的详细介绍: 一、基本参数 尺寸:0.91英寸分辨率:通常为128x32像素,意味着显示屏上有128列和32行的像素点,总共409…