[Lc14_priority_queue] 最后一块石头重量 | 数据流中的第 K 大元素 | 前K个高频单词 | 数据流的中位数
目录
1.最后一块石头的重量
题解
2.数据流中的第 K 大元素
题解
3.前K个高频单词
题解
代码
⭕4.数据流的中位数
题解
在C++中,使用标准库中的priority_queue
,默认情况下它是一个最大堆(即大堆排序),这意味着最大的元素总是位于队列的前面。具体来说,默认使用的比较器是std::less<T>
1.最后一块石头的重量
链接:1046. 最后一块石头的重量
有一堆石头,每块石头的重量都是正整数。
每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为 x
和 y
,且 x <= y
。那么粉碎的可能结果如下:
- 如果
x == y
,那么两块石头都会被完全粉碎; - 如果
x != y
,那么重量为x
的石头将会完全粉碎,而重量为y
的石头新重量为y-x
。
最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,就返回 0
。
示例:
输入:[2,7,4,1,8,1]
输出:1
解释:
先选出 7 和 8,得到 1,所以数组转换为 [2,4,1,1,1],
再选出 2 和 4,得到 2,所以数组转换为 [2,1,1,1],
接着是 2 和 1,得到 1,所以数组转换为 [1,1,1],
最后选出 1 和 1,得到 0,最终数组转换为 [1],这就是最后剩下那块石头的重量。
题解
- 每一回合,从中选出两块 最重的 石头,x == y,那么两块石头都会被完全粉碎;
- 如果 x != y,那么重量较小的 x 石头将会完全粉碎,而重量较大的 y 的石头新重量为 y-x。
- 最多只会剩下一块石头。
返回此石头的重量。如果没有石头剩下,就返回 0。
每次挑选的是先挑一堆数中最大的那个数,然后再挑一个剩下数中最大的数。
这不正好符合大根堆的数据结构吗。
解法:用堆来模拟这个过程
先拿数组的数创建一个大根堆,每次从堆里面 选择最大和次大两个数
- 如果相等就是0不用加入到大根堆里
- 如果不相等用最大的数减去次大的数,把结果加入到堆里面。
如果最后堆里还剩下一个数,返回这个数。如果堆为空说明石头全都粉碎了返回0即可。
class Solution {
public:int lastStoneWeight(vector<int>& stones) {priority_queue<int> heap;for(auto& n:stones)heap.push(n);while(heap.size()>1){int n1=heap.top();heap.pop();int n2=heap.top();heap.pop();if(n1==n2) continue;else{int tmp=n1>n2?n1-n2:n2-n1;heap.push(tmp);}}return heap.empty()?0:heap.top(); }
};
2.数据流中的第 K 大元素
链接:703. 数据流中的第 K 大元素
设计一个找到数据流中第 k
大元素的类(class)。注意是排序后的第 k
大元素,不是第 k
个不同的元素。
请实现 KthLargest
类:
KthLargest(int k, int[] nums)
使用整数k
和整数流nums
初始化对象。int add(int val)
将val
插入数据流nums
后,返回当前数据流中第k
大的元素。
示例 1:
输入:
["KthLargest", "add", "add", "add", "add", "add"]
[[3, [4, 5, 8, 2]], [3], [5], [10], [9], [4]]
输出:[null, 4, 5, 5, 8, 8]
题解
设计一个找到数据流中第 k 大元素的类(class)。
注意是 排序后的第 k 大元素,不是第 k 个不同的元素。
int add(int val) 将 val 插入数据流 nums 后,返回当前数据流中第 k 大的元素。
这道题其实考察的是一个非常经典的问题, TopK问题。
- 关于TopK问题有两种解题思路,一种是堆 O(nlogk),一种是前面刚学的快速选择算法 O(n)(前文回顾:[Lc7_分治-快排] 快速选择排序 | 数组中的第K个最大元素 | 库存管理 III。
- 快速选择排序虽然快,但是对于海量的数据内存根本放不下。
- 所以在海量数据情况最优的还是堆。
解法:用 堆 来解决
- 创建一个大小为 k 的堆(大根堆 or 小根堆)
- 循环
- 1.依次进堆
- 2.判断堆的大小是否超过 K
在堆的实现,画图和代码分析建堆,堆排序,时间复杂度以及TOP-K问题,对于求第K个最大元素
- 我们也是将前K个数建个小堆,然后将剩下的N-K个元素和堆顶元素做比较
- 如果大于堆顶元素,就先把栈顶元素pop掉,也就是把堆中最小元素删除,然后将它放进去。
- 这样一直循环,直到所有元素都比较完成。
因为是一直把堆中最小的pop掉,那堆的元素就是N个元素中最大的,而堆顶就是第K个最大的元素
别忘记我们这是一个小堆!
- sum: eg. TOP_K 大,建一个 K 小堆,大于 top 就 pop,push, 最后的就是第 K 大了,因为是一个 数值为 K 的小堆
这里我们也是建小堆,依次进堆,当堆大小超过K个,pop堆顶元素,把堆中最小元素pop掉,并且使堆保持K个大小。
每次都是堆中最小元素去掉。那最后堆中剩下的就是前K个最大元素,而堆顶就是第K个最大元素。
考虑一下下面两个问题
- 用大根堆还是小根堆
- 为什么要用大根堆(小根堆)
class KthLargest {
public:priority_queue<int,vector<int>,greater<int>> heap;int _k;KthLargest(int k, vector<int>& nums) {//第k大,建小堆_k=k;for(auto& num:nums){heap.push(num);if(heap.size()>k) heap.pop();//删除最小的}}int add(int val) {heap.push(val);if(heap.size()>_k) heap.pop();//删除最小的return heap.top();}
};
3.前K个高频单词
链接:692. 前K个高频单词
给定一个单词列表 words
和一个整数 k
,返回前 k
个出现次数最多的单词。
返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率, 按字典顺序 排序。
示例 1:
输入: words = ["i", "love", "leetcode", "i", "love", "coding"], k = 2
输出: ["i", "love"]
解析: "i" 和 "love" 为出现次数最多的两个单词,均为2次。注意,按字母顺序 "i" 在 "love" 之前。
示例 2:
输入: ["the", "day", "is", "sunny", "the", "the", "the", "sunny", "is", "is"], k = 4
输出: ["the", "is", "sunny", "day"]
解析: "the", "is", "sunny" 和 "day" 是出现次数最多的四个单词,出现次数依次为 4, 3, 2 和 1 次。
题解
这是一个TopK的问题,注意,返回的答案应该按单词出现频率由高到低排序。
如果不同的单词有相同出现频率, 按字典顺序(由低向高) 排序。
解法:利用 “堆” 来解决 TopK 问题
- 1. 预处理一下原始的字符串数组: 用一个哈希表,统计一下每一个单词出现的频次。
- 2. 创建一个大小为 k 的堆,类提供的比较函数满足不了要求,我们要自己定义一个!
(返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率, 按字典顺序(由低向高) 排序。)
如果比较频次创建一个小根堆,如果比较字典序(频次相同的时候),创建一个大根堆。
所以说创建堆写比较函数的时候必须要考虑这两点
- 当频次相同的时候字典序按照大根堆方式比较
- 当频次不同的时候按照小根堆方式比较。
- 3. 循环
1.依次进堆
2.判断堆的大小是否超过 K
- 4. 提取结果
- 因为求前K大,所以建的是一个小根堆,然后提取堆顶元素在pop是一个升序的。
- 逆序一下取前K个
代码
#和 ds 讨论后的优化代码,用lambda和emplace
⭕4.数据流的中位数
链接:295. 数据流的中位数
中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。
- 例如
arr = [2,3,4]
的中位数是3
。 - 例如
arr = [2,3]
的中位数是(2 + 3) / 2 = 2.5
。
实现 MedianFinder 类:
MedianFinder()
初始化MedianFinder
对象。void addNum(int num)
将数据流中的整数num
添加到数据结构中。double findMedian()
返回到目前为止所有元素的中位数。与实际答案相差10-5
以内的答案将被接受。
示例 1:
输入
["MedianFinder", "addNum", "addNum", "findMedian", "addNum", "findMedian"]
[[], [1], [2], [], [3], []]
输出
[null, null, null, 1.5, null, 2.0]解释
MedianFinder medianFinder = new MedianFinder();
medianFinder.addNum(1); // arr = [1]
medianFinder.addNum(2); // arr = [1, 2]
medianFinder.findMedian(); // 返回 1.5 ((1 + 2) / 2)
medianFinder.addNum(3); // arr[1, 2, 3]
medianFinder.findMedian(); // return 2.0
题解
给一个数据流,让返回每次当前已经加入到数组的数据流的中位数。
中位数是有序整数列表中的中间值。
- 如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。
- 表的大小是奇数,直接返回中间的数。
解法一:直接sort
每次从数据流中来一个数插入数组中之后,都对当前数组进行sort
然后通过下标的方式找到中间数。
每次add加入一个数都要sort,时间复杂度是O(nlogn)。
- 总体时间复杂度是非常恐怖的。
- 因为是下标访问,find 时间复杂度是 O(1)
解法二:插入排序的思想
[0,end] 有序,插入 end + 1,使 [0, end + 1]有序。
这道题正好就是这样的思想。
相当于打扑克,找到合适的位置。
add函数,每次插入一个数的时候都需要从后往前扫描找一个插入的位置
- 因此时间复杂度是O(n)
- find 也是通过下标去找 时间复杂度是O(1)
解法三:大小堆来维护数据流的中位数
此时有一个数轴已经按照从小到大的排好序了,这个时候想找中间数的时候。
- 把这些数的前半部分放到一个大根堆里面,后半部分放到小根堆里面。
- 此时找中间值也很快,前面较小的数放到大根堆里面,堆顶元素是数轴中这些较小元素种最右边的值。
- 后面较大的数放到小根堆里面,堆顶元素是数轴中这些较大元素最左边。
此时我们仅需根据数组中的元素的个数就可以求出中位数是多少了。
如果数组是偶数
- 大根堆和小根堆正好把数轴平分
- 然后 大堆堆顶元素和小堆堆顶元素相加 /2就是这个数组的中位数。
如果数组是奇数个。
- 我们就先人为规定一下,数轴左边元素是m个,右边是n个
- 人为规定左边大根堆多方一个元素,m > n (m = n + 1)
- 此时中位数就是 左边大根堆的堆顶元素。
向这样用大根堆存左边较小部分,小根堆存右边较大部分。
- find 时间复杂度也是O(1),而add快了很多
- 因为我们是从堆存这些元素的,插入和删除每次调整堆仅需O(logn)
细节问题:
add如何实现:
- 假设现在有两个堆了。
- 一个大根堆left,一个小根堆right。
- left元素个数m个,right元素个数n个,left堆顶元素x,right堆定元素y。
如果此时来了一个数num,num要么放在left里,要么放在right里。
但是放好之后可能会破坏之前的规则:
- m == n
- m > n —> m == n + 1
我们必须维护上面的规则,才能正确找到数组中位数。
接下来分情况讨论:
m == n
- num要么插入left,要么插入right。
- 如果num要进入left,那么num <= x,但是别忘记 m == n 有可能两个堆全为空,num也是直接进入left。
- 此时 m 比 n 多了一个。没关系直接进就行。
如果num进入right,那条件是 num > x。
- 此时就有问题了。n > m了,而 n > m是不被允许的,所以我们要把右边堆调整一下,就是拿right堆顶元素放到left里。
- 因为right是一个小根堆,堆顶就是最小值。
- 拿到left,还是能保证left堆里元素是较小的,right堆里元素是较大的。
- 拿right堆顶元素放到left里正好满足 m == n + 1。
这里有一个细节问题,必须num先进right堆,然后再拿right堆定元素放到left
因为 x < num < y,如果直接把y拿过去了,就破坏了left都是较小元素。right都是较大元素。
m > n —> m == n + 1
如果num进入left,那么num <= x , 但是此时不满足 m == n + 1
- 因此 进栈后将栈顶元素给right。
- 如果num进入right,那么num > x , m == n了,直接进就行了
注意: 上面都是 先进栈 再拿栈顶移动
顺便复习了大顶堆小顶堆,红黑树,avl树,排序。很好的题
class MedianFinder {
private:std::priority_queue<int> left; // 大顶堆存较小的一半std::priority_queue<int, std::vector<int>, std::greater<int>> right; // 小顶堆存较大的一半public:MedianFinder() {} // 构造函数不需要初始化队列void addNum(int num) {int m=left.size();int n=right.size();if(m==n){if(m==0 || num<=left.top())//注意为空left.push(num);else{right.push(num);left.push(right.top());right.pop();}}if(m>n){if(num<=left.top()){left.push(num);right.push(left.top());left.pop();}//先 进栈 再拿栈顶移动elseright.push(num);}}double findMedian() {if(left.size() > right.size()) {return left.top();}return (left.top() + right.top()) / 2.0; // 2.0确保浮点运算}
};
相关文章:
[Lc14_priority_queue] 最后一块石头重量 | 数据流中的第 K 大元素 | 前K个高频单词 | 数据流的中位数
目录 1.最后一块石头的重量 题解 2.数据流中的第 K 大元素 题解 3.前K个高频单词 题解 代码 ⭕4.数据流的中位数 题解 在C中,使用标准库中的priority_queue,默认情况下它是一个最大堆(即大堆排序),这意味着最…...
Electron使用WebAssembly实现CRC-16 MAXIM校验
Electron使用WebAssembly实现CRC-16 MAXIM校验 将C/C语言代码,经由WebAssembly编译为库函数,可以在JS语言环境进行调用。这里介绍在Electron工具环境使用WebAssembly调用CRC-16 MAXIM格式校验的方式。 CRC-16 MAXIM校验函数WebAssembly源文件 C语言实…...
案例5_1:单位数码管显示0
文章目录 文章介绍效果图仿真图5_1放置单位数码管 代码5_1.c 文章介绍 效果图 仿真图5_1 复制案例1_2的仿真图,在此基础上修改 注意:栅格大小需要缩小 放置单位数码管 代码5_1.c #include <reg52.h>#define uchar unsigned char #define uint un…...
OpenCV计算摄影学(20)非真实感渲染之增强图像的细节函数detailEnhance()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 此滤波器增强特定图像的细节。 cv::detailEnhance用于增强图像的细节,通过结合空间域和频率域的处理,提升图像中特定细节…...
linux按照nginx
第一步先按照依赖gcc 一键安装上面四个依赖 Nginx的编译安装需要一些依赖库,如gcc、make、zlib、openssl等。可以使用yum命令安装这些依赖: yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 创建目录 mkdir /usr/nginx 切换…...
SpringMVC(八)Knife4j 接口文档
目录 一 基础使用 1 配置pom.xml相关依赖 2 项目配置 3 输入指定路径(http://localhost:8080/doc.html) 二 一些使用方法 1 Tag 2 Operation 3 Schema 4 Parameter 5 可以根据需求来设置 补充:日期的格式化 Knife4j 是基于 Swag…...
Java集成MQTT和Kafka实现稳定、可靠、高性能的物联网消息处理系统
Java集成MQTT和Kafka实现高可用方案 1. 概述 在物联网(IoT)和分布式系统中,消息传递的可靠性和高可用性至关重要。本文将详细介绍如何使用Java集成MQTT和Kafka来构建一个高可用的消息处理系统。 MQTT(消息队列遥测传输)是一种轻量级的发布/订阅协议,适用于资源受限的设备和…...
【操作系统安全】任务6:Linux 系统文件与文件系统安全 学习指南
目录 一、文件系统基础概念 二、查看文件系统信息 2.1 磁盘空间查看 2.2 分区与挂载管理 2.3 文件系统类型操作 三、文件系统权限配置 3.1 基础权限管理 3.2 所有权管理 3.3 特殊权限设置 四、文件操作基础 4.1 文件创建 4.2 文件删除 4.3 文件复制与移动 4.4 文件…...
华为中小型企业项目案例
实验目的(1) 熟悉华为交换机和路由器的应用场景 (2) 掌握华为交换机和路由器的配置方法 实验拓扑实验拓扑如图所示。 华为中小型企业项目案例拓扑图 实验配置市场部和技术部的配置创建VLANLSW1的配置 [LSW1]vlan batch 10 20 [LSW1]q…...
Zabbix安装(保姆级教程)
Zabbix 是一款开源的企业级监控解决方案,能够监控网络的多个参数以及服务器、虚拟机、应用程序、服务、数据库、网站和云的健康状况和完整性。它提供了灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的告警,从而能够快速响应服务器问题。Zabbix 基于存储的数据提供…...
JDBC数据库连接池技术详解——从传统连接方式到高效连接管理
1. 引言 在开发数据库应用时,我们通常需要与数据库建立连接并执行SQL语句。传统的JDBC连接方式虽然简单直接,但在高并发场景下容易带来性能问题,甚至导致系统崩溃。因此,引入数据库连接池(Connection Pool)…...
微服务存在的问题及解决方案
微服务存在的问题及解决方案 1. 存在问题 1.1 接口拖慢 因为一个接口在并发时,正好执行时长又比较长,那么当前这个接口占用过多的 Tomcat 连接,导致其他接口无法即时获取到 Tomcat 连接来完成请求,导致接口拖慢,甚至…...
C语言中的结构体数组
一、什么是结构体数组? 在C语言中,**结构体(struct)**是一种自定义数据类型,它可以将不同类型的数据组合成一个单一的数据结构。结构体数组则是多个结构体元素按顺序存储在内存中的集合。通过结构体数组,可以存储多个相同类型的结构体,每个结构体都拥有自己独立的成员变…...
[GESP 202412 一级 T1] 温度转换
描述 小杨最近学习了开尔文温度、摄氏温度和华氏温度的转换。令符号 KK 表示开尔文温度,符号 CC 表示摄氏温度,符号 FF 表示华氏温度,这三者的转换公式如下: C K - 273.15 F C*1.8 32 现在小杨想编写一个程序计算某一开尔文…...
虚幻基础:GAS
文章目录 Gameplay Tag:项目类:可直接按标签管理游戏中的各种对象。其他:数据表格:gameplaytag primary data asset:项目类:存储游戏中的数据:通常用于配置表蓝图:primary data asse…...
案例:图书管理
掌握图书管理案例的实现,能够使用Spring Boot整合Thymeleaf完成图书管理案例。 1.任务需求 (1)项目使用Spring Boot整合Thymeleaf,项目展示的页面效果全部通过Thymeleaf的模板文件实现。 (2)查询所有图书。…...
Pycharm 社区版安装教程
找到安装包双击安装文件---点击下一步 一般路径是:C:\Rambo\Software\Development 选择完成后就是如下地址: C:\Rambo\Software\Development\PyCharm Community Edition 2024.3.3 点击上述3个位置就可以了----下一步 等待安装就可以了---完成后点击完成…...
RabbitMQ 全面详解(附面试重点)
RabbitMQ 全面详解(附面试重点) 一、RabbitMQ 与其他消息队列对比 特性RabbitMQKafkaRocketMQActiveMQ设计定位企业级消息中间件(传统业务场景)高吞吐分布式流处理平台(日志、大数据)金融级高可靠消息中间…...
浏览器好用的去广告插件和暗黑模式护眼插件
提升浏览体验:Edge浏览器的Adblock和Dark Mode扩展 Adblock:告别广告干扰 功能:高效拦截弹窗、横幅和视频广告,提升网页整洁度,加快加载速度,节省流量。安装链接:安装Adblock Dark Mode for E…...
VBA第二十七期 数据录入中验证格式有效性
Excel的数据有效性验证是一个有用的工具,但会需要我们向使用数据单元格提前设定有效性验证规则。这样一来使数据的有效性验证功能不能使用在VBA编程中。下面介绍如何在工作表中使用Change事件来创建数据有效性验证过程。监视单元格区域验证数据输入的有效性…...
基于 Verilog 的时序设计:从理论到实践的深度探索
在数字电路设计领域,时序设计是一个至关重要的环节,它涉及到组合逻辑电路与时序逻辑电路的设计差异、时钟信号的运用以及触发器的工作原理等多个方面。本文将围绕基于 Verilog 的时序设计实验展开,详细阐述实验过程、代码实现以及结果分析,帮助读者深入理解时序设计的核心概…...
[JAVASE] 反射
一. 反射概念 反射(Reflection)允许程序在运行时查询、访问和修改类、接口、字段和方法的信息。反射提供了一种动态操作类的能力。 二. Java反射的基本使用和应用 java.lang.reflect 是 Java 反射机制的核心包 ,提供了操作类及其成员&…...
C++11智能指针简述
一、实现原理 在智能指针对象中有一个裸指针,此指针存储的是动态创建对象的地址,用于生存期控制,能够确保智能指针对象离开所在作用域时,自动正确地销毁动态创建的对象,防止内存泄漏。 使用裸指针存在的问题ÿ…...
【spring boot 实现图片验证码 前后端】
导入hutool依赖 <!--hutool--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.36</version>获取验证码接口 Autowiredprivate Captcha captcha;private final static Long VALIDA…...
QT中读取QSetting文件
1.ini文件的格式 头文件 #include <QSettings> #include <QStringList> #include <QtCore> #include <QDebug>2.读文件 //ini文件的读取 void iniTest::readIniFile(QString filePath) {//1.打开ini文件QSettings m_iniFile(filePath, QSettings::I…...
网络安全 --- 基于网络安全的 Linux 最敏感目录及文件利用指南
目录 基于网络安全的 Linux 最敏感目录及文件利用指南 Linux 中最敏感的目录及文件 1. /etc 2. /root 3. /var/log 4. /proc 5. /tmp 6. /home 7. /boot 8. /dev 如何利用这些敏感文件 你可能没想到的知识点 总结 Linux 中最敏感的目录及文件 1. /etc 存放内容&a…...
操作系统八股文整理(一)
操作系统八股文整理 一、进程和线程的区别二、进程与线程的切换过程一、进程切换进程切换的步骤: 二、线程切换线程切换的步骤: 三、进程切换与线程切换的对比四、上下文切换的优化 三、系统调用一、系统调用的触发二、从用户空间切换到内核空间三、执行…...
ssh转发笔记
工作中又学到了,大脑转不过来 现有主机A,主机B,主机C A能访问B,B能访问C,A不能访问C C上80端口有个服务,现在A想访问这个服务,领导让用ssh转发,研究半天没找到理想的语句…...
[从零开始学SSM] Bean的配置
bean基础配置 bean别名配置 bean的作用范围配置 由运行结果可知,Spring创建的bean默认是单例的 那么如果我想创建非单例的bean怎么办,这时候就需要用到配置的方式完成了:在<bean>的属性中添加一个scope属性,该属性默认是si…...
CML(Current Mode Logic)电平详解
一、CML的定义与核心特性 CML(Current Mode Logic,电流模式逻辑) 是一种基于 电流驱动 的高速差分信号标准,专为 10Gbps以上超高速传输 设计。其核心原理是通过恒定的尾电流源切换电流路径,生成低摆幅差分信号&#x…...
【链表世界的深度探索:从基础到高阶的算法解读】—— LeetCode
文章目录 反转链表链表的中间结点合并两个有序链表相交链表两数相加两两交换链表中的节点重排链表合并K个升序链表K个一组翻转链表 反转链表 这道题目的意思很好理解,即将链表给反转即可 方法一: 利用双指针进行操作,定义两个变量 prev 以及…...
JMeter 性能测试
Jmeter 用户手册 名词解释: RPS:每秒请求数-每秒向服务器发送多少请求数(一个场景,系统面临多大的压力) TPS:每秒事务数-每秒能够处理多少请求/事务数性能评价标准(其中的一个核心指标&#x…...
LCR 159. 库存管理 III
这道题虽然简单,但是可以有多种解法,适合练习各种解法。 可以用基于快速排序思想的快速选择算法: class Solution { public:vector<int> inventoryManagement(vector<int>& stock, int cnt) {vector<int> res;int le…...
Spring IOC(五个类注解)
controller、service、Repository、Component 、Configurationpackage com.java.ioc;import com.java.ioc.Controller.HelloController; import com.java.ioc.rep.UserRepository; import com.java.ioc.service.UserService; import org.springframework.boot.SpringApplicatio…...
JavaScript 中的包装类型:概念、作用与使用场景
文章目录 引言1. 什么是包装类型?1.1 包装类型的定义1.2 包装类型的作用 2. 包装类型的使用2.1 自动装箱(Autoboxing)示例 2.2 手动创建包装对象示例 3. 包装类型的特性3.1 包装对象的生命周期示例 3.2 基本类型与包装对象的区别示例 4. 包装…...
Linux 如何上传本地文件以及下载文件到本地命令总结
如果你希望在 Shell 终端中将远程服务器上的文件下载到本地电脑,可以使用以下工具和命令: 1. rz / sz(用于 Xshell、MobaXterm 等终端) 如果你使用的是Xshell、SecureCRT、MobaXterm等支持 rz/sz 的终端,可以使用 rz …...
CentOS 上扩展 Swap 分区的大小
在 CentOS 上扩展 Swap 分区的大小可以通过以下几种方式实现: 方法 1:增加 Swap 文件(推荐) 如果你的 Swap 是基于文件的(而不是分区),你可以增加 Swap 文件的大小,而不需要修改磁盘…...
清晰易懂的Miniconda安装教程
小白也能看懂的 Miniconda 安装教程 Miniconda 是一个轻量级的 Python 环境管理工具,适合初学者快速搭建 Python 开发环境。本教程将手把手教你如何在 Windows 系统上安装 Miniconda,并配置基础环境,确保你能够顺利使用 Python 进行开发。即…...
算法016——最小覆盖子串
力扣——最小覆盖子串(点击跳转) 分析题目 我们先随便从一个位置开始,让 right 右移,直到找到符合题目的位置停下 之后,让 left 右移,此时会出现两种情况 仍然符合要求,right 不需要动不符合…...
DeepSeek-R1大模型微调技术深度解析:架构、方法与应用全解析
1. DeepSeek-R1大模型架构设计与技术特性 1.1 架构设计 DeepSeek-R1作为超大规模语言模型,其核心架构设计包含以下创新: 专家混合架构(MoE) 采用6710亿参数的混合专家架构(MoE),每个推理过程仅激活370亿参数,实现计算效率与资源利用率的突破性提升。 Transformer框架…...
二阶近似 是什么意思
二阶近似 是什么意思 一、二阶近似的概念与举例 二阶近似是数学分析中通过泰勒展开对函数进行近似的方法,保留到二阶项(即包含一阶导数和二阶导数)。在优化问题(如模型训练)中,常用于近似损失函数,帮助更精准地更新模型参数。 举例: 假设损失函数为 L ( θ ) \mathc…...
STM32U575RIT6单片机(四)
作业: 使用I2C获取SHT20传感器温湿度 使用I2C获取AP3216C三合一传感器: 光照, 接近, 红外 三个功能 合并的传感器 #ifndef SHT20_H #define SHT20_H#include "stdint.h" #include "i2c.h" #include "stdio.h" //1、确定从机的设备地址(代码不…...
deepseek内网离线部署手册
前言 在当下 AI 浪潮汹涌的时代,DeepSeek 以其卓越的性能和出色的表现,迅速成为了众多专业人士和科技爱好者热议的焦点工具。在众多AI大模型的比拼中,DeepSeek 展现出了优越的实力。然而,对于许多企业和组织而言,出于…...
第七次作业,网络防御高级
拓扑:1 接口ip配置和区域划分: fw1: [fw1]interface GigabitEthernet 0/0/0 [fw1-GigabitEthernet0/0/0]service-manage all permit [fw1]firewall zone trust [fw1-zone-trust]add interface GigabitEthernet 1/0/0 [fw1]securi…...
“AIGC”狂飙:一场正在撕裂传统产业链的“智能革命”
前言 在过去的几年中,人工智能技术经历了飞速的发展,深刻地改变了全球科技产业的格局。2023年被称为“AI元年”,这一年的标志性事件包括ChatGPT的发布和大语言模型的快速崛起,这些技术突破不仅引发了全球范围内的关注,…...
【鸿蒙开发】Hi3861学习笔记- 定时器中断
00. 目录 文章目录 00. 目录01. 概述02. 定时器相关API2.1 hi_timer_create2.2 hi_timer_start2.3 hi_timer_stop2.4 hi_timer_delete 03. 硬件设计04. 软件设计05. 实验现象06. 附录 01. 概述 定时器,顾名思义就是用来计时的,我们常常会设定计时或闹钟…...
GB9706.1-2020部分定义
一、可拆卸的网电源连接器 1、器具耦合器 2、设备电源输入插口 3、可拆卸电源软电线 4、ME 设备 5、固定的网电源插座/多位插座(MSO) 6、网电源连接器 7、网电源插头 二、可拆卸的网电源连接 1、器具输入插座 2、患者连接 3、电线管 4、可拆卸电源软电线 5、外壳 6、固定…...
PCL 多项式拟合点法线(二维)
文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这个思路其实很简单,假设我们有一组曲线点,我们可以对其拟合曲线并计算其导数来获取每个点的法向量,当然这一思路也可以扩展至三维。具体过程如下所示: 二、实现代码 PolyFit.h #pragma once/* ** 基于最小二乘…...
docker中安装Ghost报错Error: connect ECONNREFUSED 127.0.0.1:3306
今天尝试在docker中运行ghost报错 "Unknown database error"Error ID:500Error Code: ECONNREFUSED----------------------------------------Error: connect ECONNREFUSED 127.0.0.1:3306at /var/lib/ghost/versions/5.112.0/node_modules/knex-migrator/lib/datab…...
Java创造型模式之原型模式详解
设计模式是面向对象设计中的一种标准方法,用于解决常见的设计问题。原型设计模式(Prototype Pattern)是23种经典设计模式之一,属于创建型模式,它允许通过复制现有对象来创建新对象,而不是通过构造函数或工厂…...