当前位置: 首页 > news >正文

[LeetCode]链表相关题目(c语言实现)

文章目录

  • LeetCode203. 移除链表元素
  • LeetCode237. 删除链表中的节点
  • LeetCode206. 反转链表Ⅰ
  • LeetCode92. 反转链表 II
    • 思路 1
    • 思路 2
  • LeetCode876. 链表的中间结点
  • 剑指 Offer 22. 链表中倒数第k个节点
  • LeetCode21. 合并两个有序链表
  • LeetCode86. 分隔链表
  • LeetCode234. 回文链表
  • LeetCode160. 相交链表
  • LeetCode141. 环形链表

LeetCode203. 移除链表元素

  • 题目

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。OJ链接

  • 思路
    双指针
  1. 定义指针
    newHead : 返回链表的头结点
    tail : 返回链表的尾结点
    cur : 用于顺序遍历链表
  2. 如果有结点的值等于 val , 直接 free
    如果有结点的值不等于 val, 将该结点尾插至返回链表\
  3. 注意不带哨兵位的链表尾插有两种情况: 插入时链表为空 和 插入时链表不为空
  • 实例

输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]

在这里插入图片描述

  • 代码实现
struct ListNode* removeElements(struct ListNode* head, int val)
{struct ListNode* newHead;   //newHead 指向返回链表的头部struct ListNode* cur;       //cur 用于访问原链表struct ListNode* tail;      //tail 指向返回链表的尾部cur = head; newHead = tail = NULL;while (cur){if (cur->val == val)    //如果结点的值等于val, 直接free{struct ListNode* del = cur;cur = cur->next;free(del);}else{if (tail == NULL){newHead = tail = cur;      }else{tail->next = cur;tail = tail->next;}cur = cur->next;}}if (tail)tail->next = NULL;return newHead;
}

LeetCode237. 删除链表中的节点

  • 题目

有一个单链表的 head,我们想删除它其中的一个节点 node

给你一个需要删除的节点 node 。你将 无法访问 第一个节点 head

链表的所有值都是 唯一的,并且保证给定的节点 node 不是链表中的最后一个节点。

删除给定的节点。注意,删除节点并不是指从内存中删除它。这里的意思是:

给定节点的值不应该存在于链表中。
链表中的节点数应该减少 1。
node 前面的所有值顺序相同。
node 后面的所有值顺序相同。
OJ链接

  • 思路

将应删除结点的后一个结点的 val 赋值给应删除节点后, 直接删除后面一个节点

  • 实例
    在这里插入图片描述

5结点的 val 修改为 5 下一结点 1 的值, 删除 后一个 1 结点

  • 代码实现
void deleteNode(struct ListNode* node) 
{struct ListNode* nodeNext = node->next; //得到后面的结点//将后面结点的值赋值到前面一个结点上node->val = nodeNext->val;//删除后面的结点node->next = nodeNext->next;free(nodeNext);
}

LeetCode206. 反转链表Ⅰ

  • 题目

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。OJ链接

  • 思路

定义一个链表指针 newHead = NULL, 遍历每个链表结点头插

  • 实例

输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]

在这里插入图片描述

  • 代码实现
struct ListNode* reverseList(struct ListNode* head)
{struct ListNode* newHead;struct ListNode* cur;newHead = NULL;cur = head;while (cur){//头插struct ListNode* curNext = cur->next;cur->next = newHead;newHead = cur;cur = curNext;}return newHead;
}

LeetCode92. 反转链表 II

  • 题目

给你单链表的头指针 head 和两个整数 leftright ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。OJ链接

思路 1

  • 思路
  1. 如果 left == 1, 会改变头结点, 定义哨兵结点 dammyNode 找到头结点
  2. 找到 prev leftNode rightNode succ 四个位置
  3. 截断出 leftNoderightNode 之间的链表
  4. 反转该链表, 并通过 prev succ 链接
  5. 返回 dammyNode->next
  • 实例

输入:head = [1,2,3,4,5], left = 2, right = 4
输出:[1,4,3,2,5]

在这里插入图片描述

  • 代码实现
//反转链表
struct ListNode* reverseList(struct ListNode* head)
{struct ListNode* newHead;struct ListNode* cur;newHead = NULL;cur = head;while (cur){//头插struct ListNode* curNext = cur->next;cur->next = newHead;newHead = cur;cur = curNext;}return newHead;
}struct ListNode* reverseBetween(struct ListNode* head, int left, int right)
{struct ListNode* prev, *leftNode;struct ListNode* succ, *rightNode;struct ListNode* cur = head;int i = 0;//使用哨兵结点, 因为头结点可能发生改变struct ListNode* dummyNode = (struct ListNode*)malloc(sizeof(struct ListNode));dummyNode->val = -1;dummyNode->next = head;//先找到四个位置prev = dummyNode;for (i = 0; i < left - 1; i++)  //找到prev的位置{prev = prev->next;}leftNode = prev->next;  //找到leftNode的位置rightNode = dummyNode;for (i = 0; i < right; i++)  //找到leftNode的位置{rightNode = rightNode->next;}succ = rightNode->next;  //找到succ的位置//反转leftNode 和 rightNode 之间的位置rightNode->next = NULL;prev->next = NULL;reverseList(leftNode);//链接prev->next = rightNode;leftNode->next = succ;return dummyNode->next;
}

思路 2

  • 思路
  1. 如果 left == 1, 会改变头结点, 定义哨兵结点 dammyNode 找到头结点
  2. 找到 prev leftNode rightNode succ 四个位置
  3. 依次将 leftNode->next 移动至 prev->next 直至 leftNode->next == succ
  4. 返回 dummyNode->next
  • 实例

输入:head = [1,2,3,4,5], left = 2, right = 4
输出:[1,4,3,2,5]

在这里插入图片描述

  • 代码实现
struct ListNode* reverseBetween(struct ListNode* head, int left, int right)
{struct ListNode* prev, *leftNode;struct ListNode* succ, *rightNode;struct ListNode* cur = head;int i = 0;//使用哨兵结点, 因为头结点可能发生改变struct ListNode* dummyNode = (struct ListNode*)malloc(sizeof(struct ListNode));dummyNode->val = -1;dummyNode->next = head;//先找到四个位置prev = dummyNode;for (i = 0; i < left - 1; i++)  //找到prev的位置{prev = prev->next;}leftNode = prev->next;  //找到leftNode的位置rightNode = dummyNode;for (i = 0; i < right; i++)  //找到leftNode的位置{rightNode = rightNode->next;}succ = rightNode->next;  //找到succ的位置while (leftNode->next != succ)  //注意顺序{struct ListNode* prevNext = prev->next;struct ListNode* leftNodeNext = leftNode->next;prev->next = leftNodeNext;leftNode->next = leftNodeNext->next;leftNodeNext->next = prevNext;}return dummyNode->next;
}

LeetCode876. 链表的中间结点

  • 题目

给你单链表的头结点 head ,请你找出并返回链表的中间结点。OJ链接

  • 要求

如果有两个中间结点,则返回第二个中间结点。

  • 思路
    快慢指针
  1. 两个指针 slowfast. slow 每次走一步, fast 每次走两步
  2. 若结点个数是奇数个, slow处在中间结点的时候, fast->next 指向 NULL
    若结点个数是偶数个, slow处在中间结点的时候, fast 指向 NULL
  • 实例

输入:head = [1,2,3,4,5]
输出:[3,4,5]
解释:链表只有一个中间结点,值为 3 。

在这里插入图片描述

  • 代码实现
struct ListNode* middleNode(struct ListNode* head)
{struct ListNode* slow;struct ListNode* fast;slow = fast = head;while (fast && fast->next){slow = slow->next;fast = fast->next->next;}return slow;
}

剑指 Offer 22. 链表中倒数第k个节点

  • 题目

输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。OJ链接

  • 思路
    快慢指针
  1. slowfast 指向头结点
  2. 先将 fast 向后移动 k
  3. slowfast 同时向后直至 fast 指向 NULL
  4. 注意 k 比链表长度还大的处理
  • 实例

给定一个链表: 1->2->3->4->5, 和 k = 2.
返回链表 4->5.

在这里插入图片描述

  • 代码实现
struct ListNode* getKthFromEnd(struct ListNode* head, int k)
{struct ListNode* slow = head, *fast = head;while (k && fast){fast = fast->next;k--;}if (k){return NULL;}while(fast){slow = slow->next;fast = fast->next;}return slow;
}

LeetCode21. 合并两个有序链表

  • 题目

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 OJ链接

  • 思路
    双指针
  1. 创建虚拟结点 dummyNode 和 返回链表的尾结点 tail
  2. 遍历两个链表, 值小的结点尾插至返回链表
  3. 如果有链表还没有遍历完,直接尾插
  4. 返回 dummyNode->next
  • 实例

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

在这里插入图片描述

  • 代码实现
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2)
{if (list1 == NULL)return list2;if (list2 == NULL)return list1;struct ListNode *dummyNode, *tail;  //创建虚拟结点 和 链表尾结点dummyNode = (struct ListNode*)malloc(sizeof(struct ListNode));  tail = dummyNode;while (list1 && list2){if (list1->val < list2->val){//尾插tail->next = list1;list1 = list1->next;tail = tail->next;}else{//尾插tail->next = list2;list2 = list2->next;tail = tail->next;}}//如果链表还没有遍历完,直接尾插if (list1)tail->next = list1;if (list2)tail->next = list2;struct ListNode* newHead = dummyNode->next;free(dummyNode);return newHead; 
}

LeetCode86. 分隔链表

  • 题目

给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。OJ链接

  • 要求

你不需要 保留 每个分区中各节点的初始相对位置。

  • 思路
    双指针
  1. 遍历链表, 值小于 val 的结点, 放入 smallHead 指向的链表;值大于等于 val的结点, 放入 largeHead 指向的链表
  2. smallHead 指向的链表尾插 largeHead 指向的链表
  3. 注意最后的 NULL
  4. 会更改头结点, 使用虚拟结点
  • 实例

输入:head = [1,4,3,2,5,2], x = 3
输出:[1,2,2,4,3,5]

在这里插入图片描述

  • 代码实现
struct ListNode* partition(struct ListNode* head, int x)
{if (!head)return NULL;struct ListNode* cur = head;    //cur 用于遍历链表struct ListNode* large = (struct ListNode*)malloc(sizeof(struct ListNode)); struct ListNode* small = (struct ListNode*)malloc(sizeof(struct ListNode)); struct ListNode* largeHead = large; //虚拟结点指向largestruct ListNode* smallHead = small; //虚拟结点指向small//分组while (cur){if (cur->val < x)   //小于 x 尾插到 small{//尾插small->next = cur;small = small->next;}else                //大于等于 x 尾插到 large{//尾插large->next = cur;large = large->next;}cur = cur->next;}//两链表链接large->next = NULL;small->next = largeHead->next;return smallHead->next;
}

LeetCode234. 回文链表

  • 题目

给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。OJ链接

  • 思路
    快慢指针, 反转链表
  1. 使用快慢指针找到链表的中间结点
  2. 反转中间结点之后的链表
  3. 从两边向中间遍历,判断是否全部相等
  • 实例

输入:head = [1,2,2,1]
输出:true

在这里插入图片描述

  • 代码实现
bool isPalindrome(struct ListNode* head)
{   //找到中间结点struct ListNode* slow = head, *fast = head;while (fast && fast->next){slow = slow->next;fast = fast->next->next;}//反转中间结点后半部分链表struct ListNode* end = NULL;while(slow){struct ListNode* slowNext = slow->next;slow->next = end;end = slow;slow = slowNext;}//从头和从尾同时向中间遍历struct ListNode* first = head;while (end){if (end->val != first->val){return false;}end = end->next;first = first->next;}return true;
}

LeetCode160. 相交链表

  • 题目

给你两个单链表的头节点 headAheadB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。OJ链接

图示两个链表在节点 c1 开始相交:

在这里插入图片描述

  • 要求

题目数据 保证 整个链式结构中不存在环。
注意,函数返回结果后,链表必须保持其原始结构

  • 思路
  1. 分别遍历两个链表, 记录两个链表的长度, 最后判断尾结点是否一致.不一致直接返回 false.
  2. 长链表先走长度差的步数, 随后同时遍历两个链表, 遇到的第一个相同的结点即为相交点
  • 实例

在这里插入图片描述

在这里插入图片描述

  • 代码实现
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) 
{struct ListNode* curA = headA, *curB = headB;int lenA = 0;int lenB = 0;//遍历Awhile (curA->next){lenA++;curA = curA->next;}//遍历Bwhile (curB->next){lenB++;curB = curB->next;}if (curA != curB){return NULL;}//计算差值步, 找出长度长的链表int step = abs(lenA-lenB);struct ListNode* longNode = headA, *shortNode = headB;if (lenB > lenA){longNode = headB;shortNode = headA;}//长度长的先走差值步while (step){longNode = longNode->next;step--;}//同时遍历两链表while (longNode){if (longNode == shortNode){break;}longNode = longNode->next;shortNode = shortNode->next;}return longNode;
}

LeetCode141. 环形链表

  • 题目

给你一个链表的头节点 head ,判断链表中是否有环。
如果链表中存在环 ,则返回 true 。 否则,返回 false 。OJ链接

  • 思路
    快慢指针
  1. slow 每次走一步, fast 每次走两步
  2. 如果 slow == fast 有环
  3. 如果无环, fast会直接出链表
  • 实例

输入:head = [3,2,0,-4], pos = 1
输出:true
解释:链表中有一个环,其尾部连接到第二个节点。

在这里插入图片描述

  • 代码实现
bool hasCycle(struct ListNode *head) 
{struct ListNode* slow = head, *fast = head;while (fast && fast->next){slow = slow->next;fast = fast->next->next;if (slow == fast){return true;}       }return false;
}

相关文章:

[LeetCode]链表相关题目(c语言实现)

文章目录 LeetCode203. 移除链表元素LeetCode237. 删除链表中的节点LeetCode206. 反转链表ⅠLeetCode92. 反转链表 II思路 1思路 2 LeetCode876. 链表的中间结点剑指 Offer 22. 链表中倒数第k个节点LeetCode21. 合并两个有序链表LeetCode86. 分隔链表LeetCode234. 回文链表Leet…...

[深入理解NAND Flash (操作篇)] NAND 初始化常用命令:复位 (Reset) 和 Read ID 和 Read UID 操作和代码实现

依JEDEC eMMC及经验辛苦整理,原创保护,禁止转载。 专栏 《深入理解Flash:闪存特性与实践》 内容摘要 全文 4400 字,主要内容 复位的目的和作用?   NAND Reset 种类:FFh, FCh, FAh, FDh 区别 Reset 操作步骤 和 代码实现 Read ID 操作步骤 和 代码实现 Read Uni…...

RxJava 复刻简版之二,调用流程分析之案例实现

接上篇&#xff1a;https://blog.csdn.net/da_ma_dai/article/details/131878516 代码节点&#xff1a;https://gitee.com/bobidali/lite-rx-java/commit/05199792ce75a80147c822336b46837f09229e46 java 类型转换 kt 类型&#xff1a; Any Object泛型&#xff1a; 协变: …...

SpringMVC中Model和ModelAndView的区别

SpringMVC中Model和ModelAndView的区别 两者的区别&#xff1a; 在SpringMVC中&#xff0c;Model和ModelAndView都是用于将数据传递到视图层的对象 Model是”模型“的意思&#xff0c;是MVC架构中的”M“部分&#xff0c;是用来传输数据的。 理解成MVC架构中的”M“和”V“…...

Tomcat安装与管理

文章目录 Tomcat安装及管理Tomcat gz包安装&#xff1a;JDK安装&#xff1a;Tomcat安装&#xff1a;修改配置文件&#xff08;如下&#xff09;&#xff1a;服务启动配置&#xff1a; Tomcat-管理(部署jpress)&#xff1a;修改允许访问的主机修改允许管理APP的主机进入管理&…...

React之路由

React之路由 背景&#xff1a; react: 18.2.0 路由&#xff1a;react-router-dom: 6.14.2 1、路由表配置 src下新建router/index.ts import React, { lazy } from react import { Navigate } from react-router-dom import Layout from /layout/Index import { JSX } from rea…...

机器学习深度学习——非NVIDIA显卡怎么做深度学习(坑点排查)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——数值稳定性和模型化参数&#xff08;详细数学推导&#xff09; &#x1f4da;订阅专栏&#xff1a;机器…...

2021 Robocom 决赛 第四题

原题链接&#xff1a; PTA | 程序设计类实验辅助教学平台 题面&#xff1a; 在一个名叫刀塔的国家里&#xff0c;有一只猛犸正在到处跑着&#xff0c;希望能够用它的长角抛物技能来撞飞别人。已知刀塔国有 N 座城市&#xff0c;城市之间由 M 条道路互相连接&#xff0c;为了拦…...

线程池-手写线程池Linux C简单版本(生产者-消费者模型)

目录 简介手写线程池线程池结构体分析task_ttask_queue_tthread_pool_t 线程池函数分析thread_pool_createthread_pool_postthread_workerthread_pool_destroywait_all_donethread_pool_free 主函数调用 运行结果 简介 本线程池采用C语言实现 线程池的场景&#xff1a; 当某些…...

05-向量的意义_n维欧式空间

线性代数 什么是向量&#xff1f;究竟为什么引入向量&#xff1f; 为什么线性代数这么重要&#xff1f;从研究一个数拓展到研究一组数 一组数的基本表示方法——向量&#xff08;Vector&#xff09; 向量是线性代数研究的基本元素 e.g. 一个数&#xff1a; 666&#xff0c;…...

交通运输安全大数据分析解决方案

当前运输市场竞争激烈&#xff0c;道路运输企业受传统经营观念影响&#xff0c;企业管理者安全意识淡薄&#xff0c;从业人员规范化、流程化的管理水平较低&#xff0c;导致制度规范在落实过程中未能有效监督与管理&#xff0c;执行过程中出现较严重的偏差&#xff0c;其营运车…...

vimrc 配置 (持续跟新中)

vimrc 配置 #显示行号 set nu #自动换行 set autoindent #设置tab键 宽度为四个空格 set tabstop4 set shiftwidth4 set expandtab更多文章&#xff0c;详见我的博客网站...

【集成学习介绍】

1. 引言 在机器学习领域&#xff0c;集成学习&#xff08;Ensemble Learning&#xff09;是一种强大的技术&#xff0c;通过将多个弱学习器组合成一个更强大的集成模型&#xff0c;来提升模型的鲁棒性和性能。 2. 集成学习的原理 集成学习的核心思想是“三个臭皮匠&#xff…...

动画制作选择Blender还是Maya

Blender和Maya是两种最广泛使用的 3D 建模和动画应用程序。许多经验丰富的用户表示&#xff0c;Blender 在雕刻工具方面远远领先于 Maya&#xff0c;并且在 3D 建模方面达到了相同的质量水平。对于刚接触动画行业的人来说&#xff0c;您可能会问“我应该使用 Blender 还是 Maya…...

215. 数组中的第K个最大元素

题目链接&#xff1a;力扣 解题思路&#xff1a; 方法一&#xff1a;基于快速排序 因为题目中只需要找到第k大的元素&#xff0c;而快速排序中&#xff0c;每一趟排序都可以确定一个最终元素的位置。 当使用快速排序对数组进行降序排序时&#xff0c;那么如果有一趟排序过程…...

NLP From Scratch: 生成名称与字符级RNN

NLP From Scratch: 生成名称与字符级RNN 这是我们关于“NLP From Scratch”的三个教程中的第二个。 在<cite>第一个教程< / intermediate / char_rnn_classification_tutorial ></cite> 中&#xff0c;我们使用了 RNN 将名称分类为来源语言。 这次&#xff…...

Spring MVC程序开发

目录 1.什么是Spring MVC? 1.1MVC定义 1.2MVC和Spring MVC的关系 2.为什么要学习Spring MVC? 3.怎么学Spring MVC? 3.1Spring MVC的创建和连接 3.1.1创建Spring MVC项目 3.1.2RequestMapping 注解介绍 3.1.3 RequestMapping 是 post 还是 get 请求&#xff1f; ​…...

医疗知识图谱问答——文本分类解析

前言 Neo4j的数据库构建完成后&#xff0c;现在就是要实现医疗知识的解答功能了。因为是初版&#xff0c;这里的问题解答不会涉及深度学习&#xff0c;目前只是一个条件查询的过程。而这个过程包括对问题的关键词拆解分类&#xff0c;然后提取词语和类型去图数据库查询&#xf…...

JS关于多张图片上传显示报错不影响后面图片上传方法

关于多张图片上传或者下载显示报错后会程序会终止执行&#xff0c;从而影响后面图片上传。 解决方法&#xff1a; /*能正常访问的图片*/ const url https://2vimg.hitv.com/100/2308/0109/5359/dqKIZ7d4cnHL/81Vu0c.jpg?x-oss-processimage/format,webp; /*不能正常下载的图…...

MySQL踩坑之sql_mode的用法

目录 定义 报错重现 ​编辑 原因分析 sql_mode值说明 查看当前sql_mode 设置sql_mode 定义 什么是sql_mode?玩了这么久的MySQL语句࿰...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...

在树莓派上添加音频输入设备的几种方法

在树莓派上添加音频输入设备可以通过以下步骤完成&#xff0c;具体方法取决于设备类型&#xff08;如USB麦克风、3.5mm接口麦克风或HDMI音频输入&#xff09;。以下是详细指南&#xff1a; 1. 连接音频输入设备 USB麦克风/声卡&#xff1a;直接插入树莓派的USB接口。3.5mm麦克…...

学习一下用鸿蒙​​DevEco Studio HarmonyOS5实现百度地图

在鸿蒙&#xff08;HarmonyOS5&#xff09;中集成百度地图&#xff0c;可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API&#xff0c;可以构建跨设备的定位、导航和地图展示功能。 ​​1. 鸿蒙环境准备​​ ​​开发工具​​&#xff1a;下载安装 ​​De…...