备赛蓝桥杯--算法题目(4)

news/2024/12/12 15:05:37/
1. 相交链表

160. 相交链表 - 力扣(LeetCode)

class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {int cnt=0;ListNode* h1=headA;ListNode* h2=headB;while(h1->next){h1=h1->next;cnt++;}while(h2->next){h2=h2->next;cnt--;}if(h1!=h2){return nullptr;}if(cnt>0){h1=headA;h2=headB;}else{h1=headB;h2=headA;cnt=-cnt;}while(cnt){h1=h1->next;cnt--;}while(h1&&h2){if(h1==h2){break;}else{h1=h1->next;h2=h2->next;}}return h1;}
};
2. k个一组翻转链表

25. K 个一组翻转链表 - 力扣(LeetCode)

/*** 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* reverseKGroup(ListNode* head, int k) {ListNode* start=head;ListNode* lastend=forend(start,k);if(lastend==nullptr){return head;}head=lastend;reverse(start,lastend);while(start->next){ListNode* ptr=start->next;lastend=forend(ptr,k);if(lastend==nullptr){break;}reverse(ptr,lastend);start->next=lastend;start=ptr;}return head;}void reverse(ListNode* head,ListNode* rear){ListNode* prev=nullptr,*next=nullptr,*ptr=head;rear=rear->next;while(ptr!=rear){next=ptr->next;ptr->next=prev;prev=ptr;ptr=next;}head->next=rear;}ListNode* forend(ListNode* head,int k){for(int i=1;head&&i<k;i++){head=head->next;}return head;}
};
3. 随机链表的复制

138. 随机链表的复制 - 力扣(LeetCode)

/*
// Definition for a Node.
class Node {
public:int val;Node* next;Node* random;Node(int _val) {val = _val;next = NULL;random = NULL;}
};
*/class Solution {
public:Node* copyRandomList(Node* head) {if(head==nullptr){return nullptr;}Node* p1=head,*p2=head;while(p1){Node* ptr=new Node(p1->val);p2=p1->next;p1->next=ptr;ptr->next=p2;p1=p2;}p1=head;Node* ans=head->next;while(p1){Node* tmp=p1->next;p2=tmp->next;tmp->random=p1->random?p1->random->next:nullptr;p1=p2; }p1=head;while(p1){Node* tmp=p1->next;p2=tmp->next;p1->next=p2;tmp->next=p2?p2->next:nullptr;p1=p2;}return ans;}
};
4. 回文链表

234. 回文链表 - 力扣(LeetCode)

/*** 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:bool isPalindrome(ListNode* head) {ListNode* fast=head,* slow=head;while(fast&&fast->next){fast=fast->next->next;slow=slow->next;}fast=head;while(fast->next){fast=fast->next;}reverse(slow);slow=head;while(slow&&fast){if(slow->val!=fast->val){return false;}slow=slow->next;fast=fast->next;}return true;}void reverse(ListNode* head){ListNode* next=nullptr,*prev=nullptr;while(head){next=head->next;head->next=prev;prev=head;head=next;}}
};
5. 环形链表

LCR 022. 环形链表 II - 力扣(LeetCode)

/*** 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==nullptr){return nullptr;}ListNode* fast=head,* slow=head;while(fast->next&&fast->next->next){fast=fast->next->next;slow=slow->next;if(fast==slow){fast=head;while(fast!=slow){fast=fast->next;slow=slow->next;}return slow;}}return nullptr;}
};
6. 排序链表

LCR 077. 排序链表 - 力扣(LeetCode)

/*** 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* start = nullptr;ListNode* end = nullptr;ListNode* findEnd(ListNode* s, int k) {while (s->next != nullptr && --k != 0) {s = s->next;}return s;}void merge(ListNode* l1, ListNode* r1, ListNode* l2, ListNode* r2) {ListNode* pre;if (l1->val <= l2->val) {start = l1;pre = l1;l1 = l1->next;} else {start = l2;pre = l2;l2 = l2->next;}while (l1 != nullptr && l2 != nullptr) {if (l1->val <= l2->val) {pre->next = l1;pre = l1;l1 = l1->next;} else {pre->next = l2;pre = l2;l2 = l2->next;}}if (l1 != nullptr) {pre->next = l1;end = r1;} else {pre->next = l2;end = r2;}}ListNode* sortList(ListNode* head) {int n = 0;ListNode* cur = head;while (cur != nullptr) {n++;cur = cur->next;}ListNode *l1, *r1, *l2, *r2, *next, *lastTeamEnd;for (int step = 1; step < n; step <<= 1) {l1 = head;r1 = findEnd(l1, step);l2 = r1->next;r2 = findEnd(l2, step);next = r2->next;r1->next = nullptr;r2->next = nullptr;merge(l1, r1, l2, r2);head = start;lastTeamEnd = end;while (next != nullptr) {l1 = next;r1 = findEnd(l1, step);l2 = r1->next;if (l2 == nullptr) {lastTeamEnd->next = l1;break;}r2 = findEnd(l2, step);next = r2->next;r1->next = nullptr;r2->next = nullptr;merge(l1, r1, l2, r2);lastTeamEnd->next = start;lastTeamEnd = end;}}return head;}
};


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

相关文章

树的重构【东北大学oj数据结构7-4】C++

题面 编写一个程序&#xff0c;分别读取二叉树上前序树遍历和中序树遍历得到的两个节点序列&#xff0c;并在二叉树上打印后序树遍历得到的节点序列。 输入 第一行给出了一个整数 n&#xff0c;它是二叉树中的节点数。(1≤n≤40) 在第二行中&#xff0c;通过前序树遍历获得的…

频域滤波中默认的边界条件——补零与不补零(答作者问)

这个问题源自于Rafael Gonzalez的《数字图像处理》中的这幅图&#xff0c;为什么他频域滤波要将图像零延拓到二倍尺寸&#xff1f; 完全没有没要&#xff0c;既浪费计算&#xff0c;又浪费空间。 廖老师的问题是图像滤波涉及到源图像和滤波器相卷&#xff0c;卷积结果尺寸要大…

5分钟入门SpringAi - java快速接入国内大模型

本文的协作目的是帮你怎样用Spring AI给Java项目加上通义千问的AI功能。 会从设置环境讲到写代码的具体步骤。 例子使用的是spring ai alibaba和QWen千问API。你可以先试着跑通例子&#xff0c;再换成自己的实现。 现在QWen有100万免费Token可以用&#xff0c;很适合快速开发…

Spring Boot 集成阿里云OSS 完成文件上传下载

前言&#xff1a; 文件上传下载在项目开发中是一个非常常见的业务场景&#xff0c;在云服务上还没有兴起的时候&#xff0c;一般来说都会把文件单独存放到文件服务器上&#xff0c;随着云服务的兴起&#xff0c;各类云服务厂商都提供了 OSS 服务&#xff0c;本篇我们分享 Spri…

嵌入式蓝桥杯学习6 定时中断按键(短按 长按 双击)

前面的cubemx配置都和定时中断的一样&#xff0c;详情请看上文&#xff0c;这篇我们主要写按键相关的代码。 前面的外部中断的按键&#xff0c;还有直接写的按键函数都不适用于比赛&#xff0c;各有不同缺点。在比赛中按键又是个很重要的外设&#xff0c;那如何实现按键呢&…

【Android】车芯 | 使用HTP运行设备端模型

首先,确保运行在设备的模型制作过程以及host端验证已完成啦。模型制作过程可参考:【qualcomm】QNN SDK的下载以及运行在设备端的模型制作-CSDN博客 本文以之前生成的Resnet18_quantized.bin作为测试模型。 1 新建文件夹/data/test

Socks5机房代理IP的测试与挑选指南

选择合适的代理IP不仅能够提升您的网络体验&#xff0c;还能够保护您的个人信息和数据安全&#xff0c;让您更加安心地畅游互联网世界。因此如何测试和挑选合适的代理IP就显得尤为重要。本文将为您详细介绍测试和挑选方法。 1. 确定测试指标 在测试和挑选之前&#xff0c;首先…

单片机:实现贪吃蛇(附带源码)

单片机实现贪吃蛇游戏是一个较为复杂的项目&#xff0c;涉及到硬件控制、程序设计、图形显示、输入处理等方面。这里我们以基于8051单片机为例&#xff0c;详细介绍如何通过硬件和软件来实现一个简单的贪吃蛇游戏。为了让解释更加清晰&#xff0c;我们将逐步分析贪吃蛇的游戏逻…