【LeetCode Solutions】LeetCode 160 ~ 165 题解
CONTENTS
- LeetCode 160. 相交链表(简单)
- LeetCode 162. 寻找峰值(中等)
- LeetCode 164. 最大间距(中等)
- LeetCode 165. 比较版本号(中等)
LeetCode 160. 相交链表(简单)
【题目描述】
给你两个单链表的头节点 headA
和 headB
,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null
。
图示两个链表在节点 c1
开始相交:
题目数据保证整个链式结构中不存在环。
注意,函数返回结果后,链表必须保持其原始结构。
自定义评测:
评测系统的输入如下(你设计的程序不适用此输入):
intersectVal
:相交的起始节点的值。如果不存在相交节点,这一值为 0。listA
:第一个链表。listB
:第二个链表。skipA
:在listA
中(从头节点开始)跳到交叉节点的节点数。skipB
:在listB
中(从头节点开始)跳到交叉节点的节点数。
评测系统将根据这些输入创建链式数据结构,并将两个头节点 headA
和 headB
传递给你的程序。如果程序能够正确返回相交节点,那么你的解决方案将被视作正确答案。
【示例 1】
输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,6,1,8,4,5], skipA = 2, skipB = 3
输出:Intersected at '8'
解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。
从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,6,1,8,4,5]。
在 A 中,相交节点前有 2 个节点;在 B 中,相交节点前有 3 个节点。
— 请注意相交节点的值不为 1,因为在链表 A 和链表 B 之中值为 1 的节点 (A 中第二个节点和 B 中第三个节点) 是不同的节点。换句话说,它们在内存中指向两个不同的位置,而链表 A 和链表 B 中值为 8 的节点 (A 中第三个节点,B 中第四个节点) 在内存中指向相同的位置。
【示例 2】
输入:intersectVal = 2, listA = [1,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1
输出:Intersected at '2'
解释:相交节点的值为 2 (注意,如果两个链表相交则不能为 0)。
从各自的表头开始算起,链表 A 为 [1,9,1,2,4],链表 B 为 [3,2,4]。
在 A 中,相交节点前有 3 个节点;在 B 中,相交节点前有 1 个节点。
【示例 3】
输入:intersectVal = 0, listA = [2,6,4], listB = [1,5], skipA = 3, skipB = 2
输出:No intersection
解释:从各自的表头开始算起,链表 A 为 [2,6,4],链表 B 为 [1,5]。
由于这两个链表不相交,所以 intersectVal 必须为 0,而 skipA 和 skipB 可以是任意值。
这两个链表不相交,因此返回 null。
【提示】
listA
中节点数目为 m m m
listB
中节点数目为 n n n
1 < = m , n < = 3 ∗ 1 0 4 1 <= m, n <= 3 * 10^4 1<=m,n<=3∗104
1 < = N o d e . v a l < = 1 0 5 1 <= Node.val <= 10^5 1<=Node.val<=105
0 < = s k i p A < = m 0 <= skipA <= m 0<=skipA<=m
0 < = s k i p B < = n 0 <= skipB <= n 0<=skipB<=n
如果 listA
和 listB
没有交点,intersectVal
为 0
如果 listA
和 listB
有交点,intersectVal == listA[skipA] == listB[skipB]
进阶:你能否设计一个时间复杂度 O ( m + n ) O(m + n) O(m+n)、仅用 O ( 1 ) O(1) O(1) 内存的解决方案?
【分析】
本题的思想也具有跳跃性,我们用两个指针 p
和 q
分别从 headA
和 headB
开始走,当 p
走到尽头后就从 headB
再重新开始走,当 q
走到尽头后就从 headA
再重新开始走。
假设 headA
到相交点的距离为 a a a,headB
到相交点的距离为 b b b,相交点到终点的距离为 c c c,那么 p
从 headA
走到尽头再从 headB
走到相交点的距离为 a + c + b a + c + b a+c+b;同理 q
从 headB
走到尽头再从 headA
走到相交点的距离也为 b + c + a b + c + a b+c+a。
因此这样在两个指针都走到尽头并交换起点继续走的时候一定能在链表的相交点相遇,如果没有相交,那么最后两个指针会同时为空,这样两个指针也是相等,因此代码就很好写,只要两个指针走到相等的时候就能判断结果。
【代码】
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {ListNode *p = headA, *q = headB;while (p != q) p = p ? p->next : headB, q = q ? q->next : headA;return p;}
};
LeetCode 162. 寻找峰值(中等)
【题目描述】
峰值元素是指其值严格大于左右相邻值的元素。
给你一个整数数组 nums
,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。
你可以假设 nums[-1]
与 nums[n]
为负无穷大。
你必须实现时间复杂度为 O ( l o g n ) O(log n) O(logn) 的算法来解决此问题。
【示例 1】
输入:nums = [1,2,3,1]
输出:2
解释:3 是峰值元素,你的函数应该返回其索引 2。
【示例 2】
输入:nums = [1,2,1,3,5,6,4]
输出:1 或 5
解释:你的函数可以返回索引 1,其峰值元素为 2;或者返回索引 5, 其峰值元素为 6。
【提示】
1 < = n u m s . l e n g t h < = 1000 1 <= nums.length <= 1000 1<=nums.length<=1000
− 2 31 < = n u m s [ i ] < = 2 31 − 1 -2^{31} <= nums[i] <= 2^{31} - 1 −231<=nums[i]<=231−1
对于所有有效的 i i i 都有 nums[i] != nums[i + 1]
【分析】
本题展现了二分不一定要求数组具有单调性。首先本题不可能无解,设左端点下标为 i i i,那么如果 i + 1 i + 1 i+1 是降序的,那么 i i i 就是峰值,因此只能是升序;同理如果 i + 2 i + 2 i+2 是降序的,那么 i + 1 i + 1 i+1 就是峰值,因此还是只能升序。容易发现如果整个序列中间某个地方出现了降序一定都会产生峰值,如果整个序列都是升序,那么右端点就是峰值。所以无论如何都至少存在一个峰值。
现在来看看如何二分确定峰值在哪。假设二分的中点为 nums[mid]
,将其与下一个数进行比较:
nums[mid] < nums[mid + 1]
:右半部分区间一定存在峰值,因为右半区间只要出现降序就一定存在峰值,否则如果全是升序那么右端点也会是峰值,而左半部分如果全是升序是可能不存在峰值的;nums[mid] > nums[mid + 1]
:左半部分区间一定存在峰值,因为左半区间只要出现升序再降序就一定存在峰值,否则如果全是降序那么左端点也会是峰值。
本题的边界情况需要考虑清楚,可以画个图结合代码的注释进行理解。
【代码】
class Solution {
public:int findPeakElement(vector<int>& nums) {int l = 0, r = nums.size() - 1;while (l < r) {int mid = l + r >> 1; // mid 是下取整,因此 mid + 1 不可能越界,mid 等于 n 的唯一情况是 l = r = nif (nums[mid] > nums[mid + 1]) r = mid; // 这种情况 nums[mid] 可能是峰值else l = mid + 1; // nums[mid] < nums[mid + 1] 时 nums[mid] 不可能是峰值}return r;}
};
LeetCode 164. 最大间距(中等)
【题目描述】
给定一个无序的数组 nums
,返回数组在排序之后,相邻元素之间最大的差值。如果数组元素个数小于 2,则返回 0。
您必须编写一个在「线性时间」内运行并使用「线性额外空间」的算法。
【示例 1】
输入: nums = [3,6,9,1]
输出: 3
解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。
【示例 2】
输入: nums = [10]
输出: 0
解释: 数组元素个数小于 2,因此返回 0。
【提示】
1 < = n u m s . l e n g t h < = 1 0 5 1 <= nums.length <= 10^5 1<=nums.length<=105
0 < = n u m s [ i ] < = 1 0 9 0 <= nums[i] <= 10^9 0<=nums[i]<=109
【分析】
本题的思路很难。首先我们遍历一遍数组找出最大值 MAX
和最小值 MIN
,然后将 MIN ~ MAX
分成若干个等长的区间(假设区间统一为左开右闭),这样每个区间内可能会有若干个数,也可能一个数都没有。
划分完区间需要满足答案不在每个区间内部,即区间内相邻元素的差值均小于最大差值。那么这样答案就在区间之间,只需要维护每个区间的最小值与最大值,然后遍历一遍每个区间,答案一定是某个区间的最小值与其前一个区间的最大值之差。
那么区间长度如何确定才能满足条件?假设分为 n − 1 n - 1 n−1 个区间,每个区间长度为 l e n len len,那么区间内最多有 l e n len len 个数(假如区间为 (0, len]
),区间内的最大差值为 l e n − 1 len - 1 len−1。如果每个区间都取最大差值还无法覆盖整个区间,说明全局的最大差值不在任何一个区间内,即 ( n − 1 ) ( l e n − 1 ) < M A X − M I N (n - 1)(len - 1) < MAX - MIN (n−1)(len−1)<MAX−MIN,化简后可以得到 l e n len len 的范围:
( n − 1 ) ( l e n − 1 ) ≤ M A X − M I N − 1 = l e n − 1 ≤ ( M A X − M I N − 1 ) / ( n − 1 ) = l e n ≤ ( M A X − M I N + n − 2 ) / ( n − 1 ) (n - 1)(len - 1) \le MAX - MIN - 1 \\ = len - 1 \le (MAX - MIN - 1) / (n - 1) \\ = len \le (MAX - MIN + n - 2) / (n - 1) (n−1)(len−1)≤MAX−MIN−1=len−1≤(MAX−MIN−1)/(n−1)=len≤(MAX−MIN+n−2)/(n−1)
【代码】
class Solution {
public:int maximumGap(vector<int>& nums) {struct Range {int min, max;bool has_num; // 区间是否存在元素Range() : min(INT_MAX), max(INT_MIN), has_num(false) {}};int n = nums.size();int MIN = INT_MAX, MAX = INT_MIN;for (int x: nums) MIN = min(MIN, x), MAX = max(MAX, x);if (n < 2 || MAX == MIN) return 0; // 还可以特判一下是不是所有元素都相同vector<Range> r(n - 1);int len = (MAX - MIN + n - 2) / (n - 1); // 区间长度for (int x: nums) {if (x == MIN) continue; // 由于区间是左开右闭的,因此最小值不算在任何区间内int k = (x - MIN - 1) / len; // 区间索引,注意要先减去 MIN,例如第一个区间为 [MIN, MIN + len - 1]r[k].min = min(r[k].min, x), r[k].max = max(r[k].max, x), r[k].has_num = true;}int res = 0;for (int i = 0, last = MIN; i < n - 1; i++) // last 为上一个区间的最大值if (r[i].has_num) res = max(res, r[i].min - last), last = r[i].max;return res;}
};
LeetCode 165. 比较版本号(中等)
【题目描述】
给你两个版本号字符串 version1
和 version2
,请你比较它们。版本号由被点 '.'
分开的修订号组成。修订号的值是它转换为整数并忽略前导零。
比较版本号时,请按从左到右的顺序依次比较它们的修订号。如果其中一个版本字符串的修订号较少,则将缺失的修订号视为 0。
返回规则如下:
- 如果
version1 < version2
返回 -1; - 如果
version1 > version2
返回 1; - 除此之外返回 0。
【示例 1】
输入:version1 = "1.2", version2 = "1.10"
输出:-1
解释:version1 的第二个修订号为 "2",version2 的第二个修订号为 "10":2 < 10,所以 version1 < version2。
【示例 2】
输入:version1 = "1.01", version2 = "1.001"
输出:0
解释:忽略前导零,"01" 和 "001" 都代表相同的整数 "1"。
【示例 3】
输入:version1 = "1.0", version2 = "1.0.0.0"
输出:0
解释:version1 有更少的修订号,每个缺失的修订号按 "0" 处理。
【提示】
1 < = v e r s i o n 1. l e n g t h , v e r s i o n 2. l e n g t h < = 500 1 <= version1.length, version2.length <= 500 1<=version1.length,version2.length<=500
version1
和 version2
仅包含数字和 '.'
version1
和 version2
都是有效版本号
version1
和 version2
的所有修订号都可以存储在 32 位整数中
【分析】
本题就很简单了,直接按照提议模拟即可,遍历两个字符串将对应位置的版本号转换为整数进行比较。
【代码】
class Solution {
public:int compareVersion(string version1, string version2) {int n = version1.size(), m = version2.size();int i = 0, j = 0;while (i < n || j < m) {int a = i, b = j, v1 = 0, v2 = 0;while (a < n && version1[a] != '.') v1 = v1 * 10 + (version1[a] - '0'), a++; // 不加括号可能会溢出while (b < m && version2[b] != '.') v2 = v2 * 10 + (version2[b] - '0'), b++;if (v1 < v2) return -1;else if (v1 > v2) return 1;i = a + 1, j = b + 1;}return 0;}
};
相关文章:
【LeetCode Solutions】LeetCode 160 ~ 165 题解
CONTENTS LeetCode 160. 相交链表(简单)LeetCode 162. 寻找峰值(中等)LeetCode 164. 最大间距(中等)LeetCode 165. 比较版本号(中等) LeetCode 160. 相交链表(简单&#…...
关于 Spring Boot 微服务解决方案的对比,并以 Spring Cloud Alibaba 为例,详细说明其核心组件的使用方式、配置及代码示例
以下是关于 Spring Boot 微服务解决方案的对比,并以 Spring Cloud Alibaba 为例,详细说明其核心组件的使用方式、配置及代码示例: 关于 Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案! https://sca.aliyun.com/?spm7145af80…...
3.1多状态专题:LeetCode面试题17.16 按摩师
动态规划解决按摩师预约问题——以LeetCode面试题17.16为例 1.题目链接 LeetCode面试题17.16 按摩师 2.题目描述 一个有名的按摩师收到一系列的预约请求,每个预约都可以选择接受或不接受。但相邻的预约不能同时接受。给定一个包含各预约时长的数组 nums…...
Netty基础入门(一)
1.EventLoopGroup 1、概念 EventLoopGroup 是一组 EventLoop,Channel 一般会调用 EventLoopGroup 的 register 方法来绑定其中一个 EventLoop,后续这个 Channel 上的 io 事件都由此 EventLoop 来处理(保证了 io 事件处理时的线程安全&#x…...
Transformer模型的自注意机制原理、作用、优缺点,通俗易懂
Transformer模型中的自注意力机制(Self - attention Mechanism)可以通俗地理解为一种让模型自动关注文本中不同部分之间关系的方法。 工作原理 假设你有一句话“我正在吃苹果”,自注意力机制会让模型去分析每个词和其他词之间的关联程度。比…...
设计模式-结构型模式-代理模式
概述 代理模式: Proxy Pattern : 是一种结构型设计模式. 它允许你提供一个替代对象来代表真实对象,以此控制对真实对象的访问。 通过代理对象,可以在不改变目标对象的前提下,扩展其功能或控制对其的访问。 简单理解 : 代理模式就是…...
大模型开发:源码分析 Qwen 2.5-VL 视频抽帧模块(附加FFmpeg 性能对比测试)
目录 qwen 视频理解能力 messages 构建 demo qwen 抽帧代码分析 验证两个实际 case 官网介绍图 性能对比:ffmpeg 抽帧、decord 库抽帧 介绍 联系 对比 测试结果 测试明细 ffmpeg 100 qps 测试(CPU) decord 100 qps 测试&#x…...
单调栈 —— 1.基本概念与核心算法
1. 基本概念 1.1 知识预备 在理解单调栈之前,我们需要先掌握两个基础概念:栈(Stack) 和 单调性(Monotonicity)。 什么是栈(Stack) 栈是一种**后进先出(LIFO, Last-In…...
Ollama部署大模型 (完整版本、网速慢处理、聊天界面)
切记!切记!切记! Ollama软件下载的模型一般都是别人微调好的,且模型文件与HuggingFace等平台不一样,使用为主,没有官方API可以对模型微调(教程都是cpp这类的,没必要这么麻烦去操作&a…...
CMake中add_custom_command用法详解
add_custom_command 是 CMake 中用于在构建过程中添加自定义命令的工具。它通常用于生成文件或在构建特定目标前后执行操作。其行为和执行时机取决于具体使用场景。 主要用法 add_custom_command 有两种典型用法: 1. 生成文件(Generating Files&#x…...
基于疾风大模型的新能源储能优化系统:方法、实现与案例分析
一、引言 随着可再生能源渗透率不断提高,储能系统在电力系统中的重要性日益凸显。传统储能控制方法主要基于规则策略和简单优化算法,难以应对高比例新能源场景下的复杂决策需求。本文将详细介绍如何利用疾风大模型(Gale Model)构建智能化的新能源储能优化系统,包含核心方…...
Large Language Model(LLM)的训练和微调
之前一个偏工程向的论文中了,但是当时对工程理论其实不算很了解,就来了解一下 工程流程 横轴叫智能追寻 竖轴上下文优化 Prompt不行的情况下加shot(提示),如果每次都要加提示,就可以试试知识库增强检索来给提示。 如果希望增强…...
Windows 系统中安装 Git 并配置 GitHub 账户
由于电脑重装系统,重新配置了git. 以下是在 Windows 系统中安装 Git 并配置 GitHub 账户的详细步骤: 1. 安装 Git 访问 Git 官网下载页面下载 Windows 版本的 Git 安装程序运行安装程序,使用默认选项即可 2. 配置 Git 用户信息 打开命令…...
KWDB创作者计划—KWDB场景化创新实践:多模态数据融合与边缘智能的突破性应用
引言:AIoT时代的数据库范式重构 在工业物联网设备数量突破千亿、边缘计算节点覆盖率达75%的2025年,传统数据库面临多模态数据处理效率低下、边缘端算力利用率不足、跨域数据协同困难等核心挑战。KWDB(KaiwuDB Community Edition)通…...
波束形成(BF)从算法仿真到工程源码实现-第四节-最小方差无失真响应波束形成(MVDR)
一、概述 本节我们讨论最 小 方 差 无 失 真 响 应 (Minimum Variance Distortionless Response, MVDR)波束形成算法,包括原理分析及代码实现。 更多资料和代码可以进入https://t.zsxq.com/qgmoN ,同时欢迎大家提出宝贵的建议,以共同探讨学习…...
初阶数据结构--链式二叉树
二叉树(链式结构) 前面的文章首先介绍了树的相关概念,阐述了树的存储结构是分为顺序结构和链式结构。其中顺序结构存储的方式叫做堆,并且对堆这个数据结构进行了模拟实现,并进行了相关拓展,接下来会针对链…...
嵌入式硬件篇---单片机周期
文章目录 前言 前言 在单片机中,时序控制是其执行指令和协调外设的核心基础。以下是单片机中常见的各种周期及其详细说明,以层次结构展开: 时钟周期(Clock Cycle) 定义: 时钟周期是单片机的最小时间单位&a…...
嵌入式硬件篇---加法减法积分微分器
文章目录 前言 前言 在模拟电子技术中,加法器、减法器、积分器和微分器是基本的运算电路,通常基于运算放大器(运放)实现。以下是它们的核心原理、典型结构和应用场景: 加法器(Summing Amplifier࿰…...
解决使用VsCode远程ssh连接虚拟机ubuntu需要重复输入密码
1. windows打开windows powershell并输入如下命令 ssh-keygen -t ed25519 -C 你的随意一个邮箱2. 从路径C:\Users\PC.ssh下找到id_ed25519.pub并打开 复制里面全部内容 3. 切换到ubuntu $ cd .ssh/ $ vi authorized_keys 将前一步复制的内容粘贴进去并保存4. vscode重新连接…...
1558 找素数
1558 找素数 ⭐️难度:中等 🌟考点:质数 📖 📚 import java.util.Scanner; import java.util.Arrays;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int a sc.…...
[Android] PDF编辑器 Xodo PDF Reader 9.13.3 (不完全汉化,能用)
[Android] PDF编辑器 Xodo PDF 链接:https://pan.xunlei.com/s/VONeDpxJVwfmeSZu36RvZzSfA1?pwdv67d# 全面的 PDF 查看和批注 支持多种文件格式,包括 PDF 和 Microsoft Office 文档。提供用于添加注释、突出显示文本和为内容添加下划线的工具。包括夜…...
STM32LL库编程系列第八讲——ADC模数转换
系列文章目录 往期文章 STM32LL库编程系列第一讲——Delay精准延时函数(详细,适合新手) STM32LL库编程系列第二讲——蓝牙USART串口通信(步骤详细、原理清晰) STM32LL库编程系列第三讲——USARTDMA通信 STM32LL库编程…...
forms+windows添加激活水印
formswindows添加激活水印 多语言水印文本,根据系统语言自动切换。水印显示在每个屏幕的右下角,位置动态调整。半透明灰色文字,微软雅黑字体。窗口无边框、置顶、透明背景,不干扰用户操作。支持多显示器。高DPI适配。 效果图&am…...
ubuntu 服务器版本网络安全
1. 系统更新与补丁管理 定期更新系统 sudo apt update && sudo apt upgrade -y # 更新所有软件包 sudo apt autoremove # 清理旧内核和依赖启用自动安全更新 修改 /etc/apt/apt.conf.d/50unattended-upgrades,确保安全更新自动安装: Unatt…...
C++之map,set的实现
目录 一、红黑树的修改 1.1、节点结构 1.2、迭代器 1.3、红黑树的结构 二、map的封装 三、set的封装 一、红黑树的修改 首先,我们使用红黑树来封装map和set,其次我们实现的map和set想要复用同一个红黑树,所以我们需要对之…...
Elasticsearch:使用稀疏向量提升相关性
作者:来自 Elastic Vincent Bosc 学习如何在 Elasticsearch 中使用稀疏向量,以最小的复杂性提升相关性并实现搜索结果个性化。 稀疏向量是 ELSER 中的关键组件,但它们的用途远不止于此。在这篇文章中,我们将探讨稀疏向量如何在电商…...
SQL:Normalization(范式化)
目录 Normalization(范式化) 为什么需要 Normalization? 🧩 表格分析: 第一范式(1NF) 什么是第一范式(First Normal Form)? 第二范式(2NF&am…...
在pycharm中搭建yolo11分类检测系统1--PyQt5学习(一)
实验条件:pycharm24.3autodlyolov11环境PyQt5 如果pycharm还没有配PyQt5的话就先去看我原先写的这篇博文: PyQT5安装搭配QT DesignerPycharm)-CSDN博客 跟练参考文章: 目标检测系列(四)利用pyqt5实现yo…...
Neo4j GDS-12-neo4j GDS 库中节点插入(Node Embedding)算法介绍
neo4j GDS 系列 Neo4j APOC-01-图数据库 apoc 插件介绍 Neo4j GDS-01-graph-data-science 图数据科学插件库概览 Neo4j GDS-02-graph-data-science 插件库安装实战笔记 Neo4j GDS-03-graph-data-science 简单聊一聊图数据科学插件库 Neo4j GDS-04-图的中心性分析介绍 Neo…...
【论文阅读】RMA: Rapid Motor Adaptation for Legged Robots
Paper: https://arxiv.org/abs/2107.04034Project: https://ashish-kmr.github.io/rma-legged-robots/Code: https://github.com/antonilo/rl_locomotion训练环境:Raisim 1.方法 RMA(Rapid Motor Adaptation)算法通过两阶段训练实现四足机器…...
C语言数据结构:树的实现、前序、中序、后序遍历
一、什么是树 树是一种非线性的数据结构,由若干个节点组成。每个节点都包含数据,并且可以有多个子节点。树的最顶端是一个特殊的节点,叫根节点,它没有父节点。从根节点开始,树不断向下分叉,形成不同的层次…...
PostgreSQL:逻辑复制与物理复制
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
单片机Day05---动态数码管显示01234567
一、原理图 数组索引段码值二进制显示内容00x3f0011 1111010x060000 0110120x5b0101 1011230x4f0100 1111340x660110 0110450x6d0110 1101560x7d0111 1101670x070000 0111780x7f0111 1111890x6f0110 11119100x770111 0111A110x7c0111 1100B120x390011 1001C130x5e0101 1110D140…...
STM32江科大-----SPI
声明:本人跟随b站江科大学习,本文章是观看完视频后的一些个人总结和经验分享,也同时为了方便日后的复习,如果有错误请各位大佬指出,如果对你有帮助可以点个赞小小鼓励一下,本文章建议配合原视频使用❤️ 如…...
OBS SDK 中 ffmpeg_muxer 与 ffmpeg_output 的区别与使用 QSV 编码器的正确方式
在使用 OBS SDK 开发录制或推流功能时,开发者可能会遇到两个看似相似却完全不同的输出类型:ffmpeg_muxer 和 ffmpeg_output。它们的使用方式、编码器支持范围以及配置方式都有显著区别,特别是在使用硬件编码器(如 Intel QSV)时,选择正确的输出类型至关重要。 本文将重点…...
基于AOP+Log4Net+AutoFac日志框架
1.项目概述 这是一个基于 C# 的 WPF 项目 WpfApp12log4net,它综合运用了依赖注入、日志记录和接口实现等多种技术,同时使用了 Autofac、Castle.Core 和 log4net 等第三方库。 2.配置log4net 新建一个Log4Net.config,配置需要记录的日志信息…...
【Hadoop入门】Hadoop生态之Yarn简介
1 什么是Yarn? Yarn(Yet Another Resource Negotiator) 是Hadoop生态系统中的资源管理和调度框架,负责为上层应用提供统一的资源管理和调度服务。 是Hadoop 2.0引入的重要架构改进,成为Hadoop集群的资源管理层…...
猫咪如厕检测与分类识别系统系列【三】融合yolov11目标检测
✅ 前情提要 家里养了三只猫咪,其中一只布偶猫经常出入厕所。但因为平时忙于学业,没法时刻关注牠的行为。我知道猫咪的如厕频率和时长与健康状况密切相关,频繁如厕可能是泌尿问题,停留过久也可能是便秘或不适。为了更科学地了解牠…...
qt的基本使用
先教大家如何基本使用qt,这样是为了后面的服务器使用做铺垫 安装测试用例的创建创建qt界面程序后讲解各文件的作用qt的界面控件实现逻辑功能的流程测试效果 我会写一个测试用例方便大家了解与使用 安装 参考这个文章来安装,链接: qt安装 测试用例的创建…...
Spring AI使用tool Calling和MCP
深入探索 Spring AI Spring AI版本1.0.0.M6 在人工智能与软件开发深度融合的时代,Spring AI 作为一个强大的框架,持续为开发者提供着高效且便捷的工具,以实现与大语言模型(LLM)的无缝交互。Spring AI 的最新版本引入了…...
【前端】webpack一本通
今日更新完毕,不定期补充,建议关注收藏点赞。 目录 简介使用webpack默认只能处理js文件 ->引入加载器对JS语法降级,兼容低版本语法合并文件再次打包进阶 工作原理html-webpack-plugin插件webpack开发服务器引入使用webpack-dev-server模块…...
STM32蓝牙连接Android实现云端数据通信(电机控制-开源)
引言 基于 STM32F103C8T6 最小系统板完成电机控制。这个小项目采用 HAL 库方法实现,通过 CubeMAX 配置相关引脚,步进电机使用 28BYJ-48 (四相五线式步进电机),程序通过蓝牙连接手机 APP 端进行数据收发, OL…...
OpenHarmony Camera开发指导(二):相机设备管理(ArkTS)
在开发一个相机应用前,需要先通过调用Camera接口获取支持的相机设备列表,然后创建相机设备对象做后续处理。 开发步骤 1、导入camera接口,接口中提供了相机相关的属性和方法,导入方法如下。 import { camera } from kit.Camera…...
安卓 手机拨打电话录音保存地址适配
今天来聊一聊各大厂商拨打电话自动录音保存地址适配,希望同学们积极参与评论,把自己的手机型号、Android版本及拨打电话录音地址发一下,众人拾柴火焰高啊,这样有利于后期的同学积累经验,为中国的手机适配做一次贡献。 …...
spring cloud微服务断路器详解及主流断路器框架对比
微服务断路器详解 1. 核心概念 定义:断路器模式通过快速失败机制防止故障扩散,当服务调用出现异常或超时时,自动切换到降级逻辑,避免级联故障。核心功能: 熔断:在故障阈值(如错误率)…...
idea在线离线安装插件教程
概述 对于小白来说,刚使用idea时,还有很多不懂的地方,这里,简单介绍下如何安装插件。让小白能容易上手全盘idea。 1、File -> Settings 2、找到 Plugins -> Marketplace 3、安装 3.1、在线安装 输入想搜索的内容&#x…...
项目管理(高软56)
系列文章目录 项目管理 文章目录 系列文章目录前言一、进度管理二、配置管理三、质量四、风险管理五、真题总结 前言 本节主要讲项目管理知识,这些知识听的有点意思啊。对于技术人想创业,单干的都很有必要听听。 一、进度管理 二、配置管理 三、质量 四…...
通过类似数据蒸馏或主动学习采样的方法,更加高效地学习良品数据分布
好的,我们先聚焦第一个突破点: 通过类似数据蒸馏或主动学习采样的方法,更加高效地学习良品数据分布。 这里我提供一个完整的代码示例: ✅ Masked图像重建 残差热力图 这属于自监督蒸馏方法的一个变体: 使用一个 预…...
Java设计模式实战:策略模式在SimUDuck问题中的应用
一、前言 在面向对象编程中,设计模式是解决常见问题的可重用方案。今天,我将通过经典的SimUDuck问题,向大家展示如何使用策略模式(Strategy Pattern)来设计灵活、可扩展的鸭子模拟程序。 二、问题描述 SimUDuck是一个模拟鸭子行为的程序。最…...
考虑蒙特卡洛考虑风光不确定性的配电网运行风险评估—Matlab
目录 一、主要内容: 二、实际运行效果: 三、理论介绍: 四、完整代码数据下载: 一、主要内容: 由于风电光伏出力的不确定性,造成配电网运行风险,运用蒙特卡洛概率潮流计算分析电压和线路支路…...