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

【LeetCode 热题 100】反转链表 / 回文链表 / 有序链表转换二叉搜索树 / LRU 缓存

头像
⭐️个人主页:@小羊
⭐️所属专栏:LeetCode 热题 100
很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~

动图描述

目录

      • 相交链表
      • 反转链表
      • 回文链表
      • 环形链表
      • 环形链表 II
      • 合并两个有序链表
      • 两数相加
      • 删除链表的倒数第 N 个结点
      • 两两交换链表中的节点
      • K 个一组翻转链表
      • 随机链表的复制
      • 排序链表
      • 合并 K 个升序链表
      • 有序链表转换二叉搜索树
      • LRU 缓存


相交链表

  • 相交链表

在这里插入图片描述

class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {ListNode* cur1 = headA, *cur2 = headB;while (cur1 != cur2){cur1 == nullptr ? cur1 = headB : cur1 = cur1->next;cur2 == nullptr ? cur2 = headA : cur2 = cur2->next;}return cur1;}
};

反转链表

  • 反转链表

在这里插入图片描述

class Solution {
public:ListNode* reverseList(ListNode* head) {ListNode* prev = nullptr;ListNode* cur = head;while (cur){ListNode* next = cur->next;cur->next = prev;prev = cur;cur = next;} return prev;}
};

虽然上面这种方法更简单,但是相对来说不太好理解,如果新增一个虚拟头结点会清晰很多。

class Solution {
public:ListNode* reverseList(ListNode* head) {ListNode* newhead = new ListNode;ListNode* cur = head;while (cur){ListNode* next = cur->next;cur->next = newhead->next;newhead->next = cur;cur = next;} cur = newhead->next;delete newhead;return cur;}
};

回文链表

  • 回文链表

在这里插入图片描述

首先用快慢指针找到中间节点,反转后半部分链表,然后逐个遍历比较两个链表是否所有值都相等。
需要注意的是,如果原链表节点个数为奇数,则后本部分会比前半部分多一个节点,因此我们最后需要判断的是遍历后半部分链表的指针最后是否为空。

class Solution {
public:bool isPalindrome(ListNode* head) {ListNode* fast = head, *slow = head;while (fast && fast->next){slow = slow->next;fast = fast->next->next;}// 翻转后半部分ListNode* prev = nullptr;while (slow){ListNode* next = slow->next;slow->next = prev;prev = slow;slow = next;}// 比较是否回文ListNode* cur1 = head, *cur2 = prev;while (cur1 && cur2 && cur1->val == cur2->val){cur1 = cur1->next;cur2 = cur2->next;}return cur2 == nullptr;}
};

环形链表

  • 环形链表

在这里插入图片描述

链表类经典判环问题,通常用快慢双指针解决。

class Solution {
public:bool hasCycle(ListNode *head) {ListNode* fast = head, *slow = head;while (fast && fast->next){fast = fast->next->next;slow = slow->next;if (fast == slow) return true;}return false;}
};

环形链表 II

  • 环形链表 II

在这里插入图片描述

class Solution {
public:ListNode *detectCycle(ListNode *head) {ListNode* fast = head, *slow = head;while (fast && fast->next){slow = slow->next;fast = fast->next->next;if (fast == slow){while (head != fast){head = head->next;fast = fast->next;}return fast;}}return nullptr;}
};

合并两个有序链表

  • 合并两个有序链表

在这里插入图片描述

合并两个有序链表,这个过程是重复的递归过程。

class Solution {
public:ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {if (list1 == nullptr) return list2;if (list2 == nullptr) return list1;if (list1->val < list2->val){list1->next = mergeTwoLists(list1->next, list2);}else{list2->next = mergeTwoLists(list1, list2->next);}return list1->val < list2->val ? list1 : list2;}
};

两数相加

  • 两数相加

在这里插入图片描述

class Solution {
public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {int t = 0;ListNode* newhead = new ListNode();ListNode* tail = newhead;while (l1 || l2){if (l1){t += l1->val;l1 = l1->next;}if (l2){t += l2->val;l2 = l2->next;}tail->next = new ListNode(t % 10);t /= 10;tail = tail->next;}if (t) tail->next = new ListNode(t);tail = newhead->next;delete newhead;return tail;}
};

删除链表的倒数第 N 个结点

  • 删除链表的倒数第 N 个结点

在这里插入图片描述

第一次没用虚拟头结点,搞了半天过不去,半天才反应过来还有删除头节点的可能🤡…

class Solution {
public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode *newhead = new ListNode(0, head);ListNode *l = newhead, *r = head;while (n--) r = r->next;while (r){r = r->next;l = l->next;}l->next = l->next->next;head = newhead->next;return head;}
};

两两交换链表中的节点

  • 两两交换链表中的节点

在这里插入图片描述

方法一:用多个指针标记节点。

class Solution {
public:ListNode* swapPairs(ListNode* head) {if (head == nullptr || head->next == nullptr) return head; ListNode *newhead = new ListNode(0, head);ListNode *tail = newhead, *cur1 = head, *cur2 = cur1->next, *cur3 = cur2->next;while (cur1 && cur1->next){tail->next = cur2;cur1->next = cur3;cur2->next = cur1;tail = cur1;cur1 = cur3;if (cur1) cur2 = cur1->next;if (cur2) cur3 = cur2->next;}tail = newhead->next;delete newhead;return tail;}
};

方法二:递归。

class Solution {
public:ListNode* swapPairs(ListNode* head) {if (head == nullptr || head->next == nullptr) return head;ListNode *newhead = head->next;head->next = swapPairs(newhead->next);newhead->next = head;return newhead;}
};

方法三:最常想到的方法。

class Solution {
public:ListNode* swapPairs(ListNode* head) {if (head == nullptr || head->next == nullptr) return head;ListNode *newhead = new ListNode(0, head);ListNode *tail = newhead, *cur = head;while (cur && cur->next){ListNode *next = cur->next->next;tail->next = cur->next;cur->next->next = cur;cur->next = next;tail = cur;cur = next;}tail = newhead->next;delete newhead;return tail;}
};

K 个一组翻转链表

  • K 个一组翻转链表

在这里插入图片描述

  • 先求出链表的长度,计算能反转多少组;
  • 循环反转链表操作,注意每组结束尾节点都需要变换。
class Solution {
public:ListNode* reverseKGroup(ListNode* head, int k) {ListNode* cur = head;int len = 0;while (cur){len++;cur = cur->next;}len /= k;cur = head;ListNode *newhead = new ListNode;ListNode *tail = newhead;for (int i = 0; i < len; i++){ListNode *tmp = cur;for (int j = 0; j < k; j++){ListNode *next = cur->next;cur->next = tail->next;tail->next = cur;cur = next;}tail = tmp;}tail->next = cur;tail = newhead->next;delete newhead;return tail;}
};

随机链表的复制

  • 随机链表的复制

在这里插入图片描述

遍历新建链表,过程中建立节点间的映射关系;第二次遍历链表,根据链表的映射关系就能找到随机指针指向的节点。

class Solution {
public:Node* copyRandomList(Node* head) {unordered_map<Node*, Node*> map;Node *newhead = nullptr, *tail = nullptr, *cur = head;while (cur){if (tail == nullptr){newhead = tail = new Node(cur->val);}else{tail->next = new Node(cur->val);tail = tail->next;}map[cur] = tail;cur = cur->next;}cur = head;tail = newhead;while (cur){if (cur->random == nullptr) {tail->random = nullptr;}else{tail->random = map[cur->random];}cur = cur->next;tail = tail->next;}return newhead;}
};

排序链表

  • 排序链表

在这里插入图片描述

class Solution {
public:ListNode* sortList(ListNode* head) {if (head == nullptr) return head;int len = 0;ListNode *cur = head;while (cur){len++;cur = cur->next;}return merge(head, len);}ListNode* merge(ListNode* head, int len){if (len == 1) return head;int halflen = len / 2;ListNode *tail = head;for (int i = 0; i < halflen - 1; i++) // 边界情况,2个节点{tail = tail->next;}ListNode *nexthead = tail->next;tail->next = nullptr; // 断开链表ListNode *cur1 = merge(head, halflen);ListNode *cur2 = merge(nexthead, len - halflen);return sort(cur1, cur2);}ListNode* sort(ListNode* l1, ListNode* l2){ListNode node;ListNode *tail = &node;while (l1 && l2){if (l1->val < l2->val){tail->next = l1;l1 = l1->next;}else{tail->next = l2;l2 = l2->next;}tail = tail->next;}if (l1) tail->next = l1;if (l2) tail->next = l2;return node.next;}
};

合并 K 个升序链表

  • 合并 K 个升序链表

在这里插入图片描述

优先级队列.

class Solution {struct cmp{bool operator()(const ListNode *l1, const ListNode *l2){return l1->val > l2->val;}};
public:ListNode* mergeKLists(vector<ListNode*>& lists) {priority_queue<ListNode*, vector<ListNode*>, cmp> pq;for (auto &e : lists) if (e) pq.push(e);ListNode node;ListNode *tail = &node;while (pq.size()){tail->next = pq.top();pq.pop();tail = tail->next;if (tail->next) pq.push(tail->next);}return node.next;}
};

分治

class Solution {
public:ListNode* mergeKLists(vector<ListNode*>& lists) {return merge(lists, 0, lists.size() - 1);}ListNode* merge(vector<ListNode*>& lists, int l, int r){if (l > r) return nullptr;if (l == r) return lists[l];int mid = (l + r) >> 1;return merge2Lists(merge(lists, l, mid), merge(lists, mid + 1, r));}ListNode* merge2Lists(ListNode* l1, ListNode* l2){if (l1 == nullptr) return l2;if (l2 == nullptr) return l1;if (l1->val < l2->val){l1->next = merge2Lists(l1->next, l2);return l1;}else{l2->next = merge2Lists(l1, l2->next);return l2;}}
};

有序链表转换二叉搜索树

  • 有序链表转换二叉搜索树

在这里插入图片描述

class Solution {
public:TreeNode* sortedListToBST(ListNode* head) {int len = 0;ListNode *cur = head;while (cur){len++;cur = cur->next;}return buildBST(head, 0, len - 1);}TreeNode* buildBST(ListNode*& head, int l, int r){if (l > r) return nullptr;int mid = l + (r - l) / 2;TreeNode *left = buildBST(head, l, mid - 1);TreeNode *root = new TreeNode(head->val);root->left = left;head = head->next;root->right = buildBST(head, mid + 1, r);return root;}
};

LRU 缓存

  • LRU 缓存

在这里插入图片描述

class LRUCache {struct listnode{int key, value;listnode* prev;listnode* next;listnode(int k = 0, int v = 0) : key(k), value(v), prev(nullptr), next(nullptr){}};
public:LRUCache(int capacity) : _capacity(capacity), _size(0){_head = new listnode;_tail = new listnode;_head->next = _tail;_tail->prev = _head;}// 引入头尾两个虚拟节点,方便头插和尾删,头尾指针不用修改指向int get(int key) {if (!_cache.count(key)){return -1;}else{listnode* node = _cache[key];move2head(node);return node->value;}}void put(int key, int value) {if (!_cache.count(key)){listnode* newnode = new listnode(key, value);_cache[key] = newnode;_size++;add2head(newnode);if (_size > _capacity){removetail();}}else{listnode* node = _cache[key];node->value = value;move2head(node);}}void add2head(listnode* node){node->next = _head->next;_head->next->prev = node;_head->next = node;node->prev = _head;}void move2head(listnode* node){node->prev->next = node->next;node->next->prev = node->prev;add2head(node);}void removetail(){listnode* tail = _tail->prev;tail->prev->next = tail->next;tail->next->prev = tail->prev;_cache.erase(tail->key);delete tail;_size--;}    
private:int _size;int _capacity;listnode* _head;listnode* _tail;unordered_map<int, listnode*> _cache;
};

本篇文章的分享就到这里了,如果您觉得在本文有所收获,还请留下您的三连支持哦~

头像

相关文章:

【LeetCode 热题 100】反转链表 / 回文链表 / 有序链表转换二叉搜索树 / LRU 缓存

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;LeetCode 热题 100 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 相交链表反转链表回文链表环形链表环形链表 II合并两个有序链表两数相加删除链表的倒数第 N 个结点两两交换链表中的…...

Seata源码—1.Seata分布式事务的模式简介

大纲 1.Seata分布式事务框架简介 2.Seata AT模式实现分布式事务的机制 3.Seata AT模式下的写隔离机制 4.Seata AT模式下的读隔离机制 5.官网示例说明Seata AT模式的工作机制 6.Seata TCC模式的介绍以及与AT模式区别 7.Seata Saga模式的介绍 8.单服务多个库的分布式事务…...

牛客——签到题

分析 我拿到题就去看了示例&#xff0c;可以发现&#xff0c;并非是让难度最小&#xff0c;或者难度系数出现次数最多的成为签到题的难度。那我就有点懵了。。。。。。 但仔细观察题目本身的特定条件和目标&#xff0c;即在满足选择 m 道题的前提下&#xff0c;尽可能多地选择…...

【idea】调试篇 idea调试技巧合集

前言&#xff1a;之前博主写过一篇idea技巧合集的文章&#xff0c;由于技巧过于多了&#xff0c;文章很庞大&#xff0c;所以特地将调试相关的技巧单独成章, 调试和我们日常开发是息息相关的&#xff0c;用好调试可以事半功倍 文章目录 1. idea调试异步线程2. idea调试stream流…...

k8s监控方案实践补充(一):部署Metrics Server实现kubectl top和HPA支持

k8s监控方案实践补充&#xff08;一&#xff09;&#xff1a;部署Metrics Server实现kubectl top和HPA支持 文章目录 k8s监控方案实践补充&#xff08;一&#xff09;&#xff1a;部署Metrics Server实现kubectl top和HPA支持一、Metrics Server简介二、Metrics Server实战部署…...

直流电机风速仪

在处理直流电机风速仪的 ADC 读取问题时&#xff0c;下面为你详细介绍实现方法。 硬件连接 风速仪的输出通常是模拟信号&#xff0c;所以需要把它连接到微控制器的 ADC 输入引脚。比如&#xff0c;在 Arduino 上可以连接到 A0 - A5 这类模拟输入引脚。 ADC 读取原理 风速仪…...

dify 连接不上ollama An error occurred during credentials validation:

三大报错 An error occurred during credentials validation: HTTPConnectionPool(hosthost.docker.internal, port11434): Max retries exceeded with url: /api/chat (Caused by NameResolutionError("<urllib3.connection.HTTPConnection object at 0x7f26fc3c00b0&…...

19、云端工业物联网生态组件 - 工厂能效与预测维护 - /数据与物联网组件/cloud-iiot-factory-analysis

76个工业组件库示例汇总 云端工业物联网生态组件 - 工厂能效与预测维护 (模拟) 概述 这是一个交互式的 Web 组件&#xff0c;旨在模拟一个云端工业物联网 (IIoT) 平台的核心界面&#xff0c;专注于工厂层面的能效分析和基于传感器数据的预测性维护概念。用户可以监控模拟的设…...

python打卡day25

python的异常处理机制 知识点回顾&#xff1a; 异常处理机制debug过程中的各类报错try-except机制try-except-else-finally机制 在即将进入深度学习专题学习前&#xff0c;我们最后差缺补漏&#xff0c;把一些常见且重要的知识点给他们补上&#xff0c;加深对代码和流程的理解。…...

Jmeter变量传递介绍

文章目录 一、Jmeter变量类型及作用域二、变量传递方式1. 用户定义变量&#xff08;User Defined Variables&#xff09;2. CSV 数据文件&#xff08;CSV Data Set Config&#xff09;3.正则表达式提取器4.后置处理器&#xff08;Post Processor)4.1BeanShell/JSR223 后置处理器…...

机器学习 Day16 聚类算法 ,数据降维

聚类算法 1.简介 1.1 聚类概念 无监督学习&#xff1a;聚类是一种无监督学习算法&#xff0c;不需要预先标记的训练数据 相似性分组&#xff1a;根据样本之间的相似性自动将样本归到不同类别 相似度度量&#xff1a;常用欧式距离作为相似度计算方法 1.2 聚类vs分类 聚类&…...

白日梦:一个方便快捷的将故事制作成视频的工具

我有故事&#xff0c;但我想把它制作成视频&#xff0c;有没有什么好用的工具可以使用呢&#xff1f;如果你也被类似的问题困扰&#xff0c;那么今天分享的这个工具将会解决这个问题。从需求来看&#xff0c;我们希望的是纯文本的故事输入&#xff0c;完整的故事视频输出&#…...

ultralytics中tasks.py---parse_model函数解析

一、根据scale获取对应的深度、宽度和最大通道数 具体例如yaml文件内容如下: depth=0.33,那么重复的模块例如C2f原本重复次数是3,6,6,3,那么T对应的模型重复次数就是三分之一即1,1,2,1次。这个在后面定义的: width=0.25,max_channels=1024 原本c2=64,但经过make_div…...

Codeforces Round 1003 (Div. 4)

A. Skibidus and Amog’u 题目大意 给你一个字符串&#xff0c;把末尾的us换成i 解题思路 删掉最后两个加上“i”即可 代码实现 #include <bits/stdc.h>using i64 long long;int main() {std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);int …...

基于RFSOC ZU28DR+DSP 6U VPX处理板

板卡概述 基于RFSOC ZU28DRDSP 6U VPX处理板&#xff0c;是一款基于6U VPX总线架构的高速信号处理平台&#xff0c;数模混合信号处理卡&#xff0c;采用 Xilinx ZYNQ UltraScale RFSoC ZU28DR和TI DSP TMS320C6678组合设计&#xff0c;两者之间通过4x 5G SRIO互联。本板卡可实…...

C# 通过脚本实现接口

以前C#脚本用的委托注入模式&#xff0c;今天在AI提示下&#xff0c;尝试用脚本直接实现接口&#xff0c;然后C#可以动态或指定新类型创建接口实现对象。从代码角度看&#xff0c;稍显复杂&#xff0c;但脚本方面显得更简洁和有条理。 引用包需要Microsoft.CodeAnalysis、Micro…...

代码随想录算法训练营Day58

力扣695.岛屿的最大面积【medium】 力扣827.最大人工岛【hard】 一、力扣695.岛屿的最大面积【medium】 题目链接&#xff1a;力扣695.岛屿的最大面积 视频链接&#xff1a;代码随想录 1、思路 和岛屿数量那道题很像&#xff0c;只是递归这边要多一个怎么计算面积&#xff0c…...

若依框架页面

1.页面地址 若依管理系统 2.账号和密码 管理员 账号admin 密码admin123 运维 账号yuwei 密码123456 自己搭建的地址方便大家学习&#xff0c;不要攻击哦&#xff0c;谢谢啊...

redis 缓存穿透,缓存击穿,缓存雪崩

一&#xff1a;什么是缓存 &#xff08;1&#xff09;计算机&#xff1a;cpu、内存、磁盘&#xff0c;cpu任何需要的数据都要从内容中读入数据放入cpu,从cup内部添加一个缓存 &#xff08;2&#xff09;web开发的每个阶段都可以添加缓存 &#xff08;3&#xff09;缓存优缺点&a…...

ORACLE查看归档是否打开

一、使用V$DATABASE视图 SELECT log_mode FROM v$database; 结果说明&#xff1a; ARCHIVELOG - 数据库处于归档模式 NOARCHIVELOG - 数据库处于非归档模式 二、 使用v$instance视图 SELECT archiver FROM v$instance; 结果说明&#xff1a; STARTED - 归档进程已启动(归档模…...

Python环境管理工具深度指南:pip、Poetry、uv、Conda

Python环境管理工具深度指南&#xff1a;pip、Poetry、uv、Conda Python开发中&#xff0c;环境管理和依赖管理是不可避开的重要话题。合理地管理项目的Python环境&#xff08;尤其是虚拟环境&#xff09;有助于隔离不同项目的依赖&#xff0c;避免版本冲突&#xff0c;并确保…...

高等数学第七章---微分方程(§7.4-§7.5可降阶的高阶微分方程、二阶线性微分方程)

7.4 可降阶的高阶微分方程 某些类型的高阶微分方程可以通过适当的变量代换&#xff0c;将其阶数降低&#xff0c;从而化为阶数较低的方程进行求解。 一、 y ( n ) f ( x ) y^{(n)}f(x) y(n)f(x) 型方程 特征&#xff1a;方程的左端是 y y y 的 n n n 阶导数&#xff0c;右…...

Jmeter对服务端进行压测快速上手

安装 下载 安装jmeter的之前必须先装有JDK 官网下载地址&#xff1a;https://archive.apache.org/dist/jmeter/binaries/ jmeter3.0的对应jdk1.7&#xff0c;jmeter4.0对应jdk1.8以上&#xff0c;否者启用jmeter也会报错 配置 配置环境变量 在系统变量PATH上加上: %JMET…...

【嵌入模型与向量数据库】

目录 一、什么是向量&#xff1f; 二、为什么需要向量数据库&#xff1f; 三、向量数据库的特点 四、常见的向量数据库产品 FAISS 支持的索引类型 vs 相似度 五、常见向量相似度方法对比 六、应该用哪种 七、向量数据库的核心逻辑 &#x1f50d; 示例任务&#xff1a;…...

鸿蒙OSUniApp 开发实时聊天页面的最佳实践与实现#三方框架 #Uniapp

使用 UniApp 开发实时聊天页面的最佳实践与实现 在移动应用开发领域&#xff0c;实时聊天功能已经成为许多应用不可或缺的组成部分。本文将深入探讨如何使用 UniApp 框架开发一个功能完善的实时聊天页面&#xff0c;从布局设计到核心逻辑实现&#xff0c;带领大家一步步打造专…...

React构建组件

React构建组件 React 组件构建方式详解 React 组件的构建方式随着版本迭代不断演进&#xff0c;目前主要有 函数组件 和 类组件 两种核心模式&#xff0c;并衍生出多种高级组件设计模式。以下是完整的构建方式指南&#xff1a; 文章目录 React构建组件React 组件构建方式详解…...

auto.js面试题及答案

以下是常见的 Auto.js 面试题及参考答案&#xff0c;涵盖基础知识、脚本编写、运行机制、权限、安全等方面&#xff0c;适合开发岗位的技术面试准备&#xff1a; 一、基础类问题 什么是 Auto.js&#xff1f;它的主要用途是什么&#xff1f; 答案&#xff1a; Auto.js 是一个…...

OPC UA + ABP vNext 企业级实战:高可用数据采集框架指南

&#x1f680;&#x1f4ca; OPC UA ABP vNext 企业级实战&#xff1a;高可用数据采集框架指南 &#x1f680; &#x1f4d1; 目录 &#x1f680;&#x1f4ca; OPC UA ABP vNext 企业级实战&#xff1a;高可用数据采集框架指南 &#x1f680;一、前言 &#x1f3af;二、系统…...

【springcloud学习(dalston.sr1)】Ribbon负载均衡(七)

该系列项目整体介绍及源代码请参照前面写的一篇文章【springcloud学习(dalston.sr1)】项目整体介绍&#xff08;含源代码&#xff09;&#xff08;一&#xff09; &#xff08;一&#xff09;Ribbon 负载均衡的理解 ribbon是一种客户端的负载均衡。类似于比如我们在火车站窗口…...

编程题 03-树1 树的同构【PAT】

文章目录 题目输入格式输出格式输入样例1&#xff08;对应图一&#xff09;输出样例1输入样例2&#xff08;对应图二&#xff09;输出样例2 题解解题思路完整代码 编程练习题目集目录 题目 给定两棵树 T 1 T_1 T1​ 和 T 2 T_2 T2​ 。如果 T 1 T_1 T1​ 可以通过若干次左右…...

团结引擎开源车模 Sample 发布:光照渲染优化 动态交互全面体验升级

光照、材质与交互效果的精细控制&#xff0c;通常意味着复杂的技术挑战&#xff0c;但借助 Shader Graph 14.1.0(已内置在团结引擎官方 1.5.0 版本中)&#xff0c;这一切都变得简单易用。通过最新团结引擎官方车模 Sample&#xff0c;开发者能切身感受到全新光照优化与编辑功能…...

Chrome安装最新vue-devtool插件

本vue-devtool版本是官方的 v7.6.8版本&#xff0c;兼容性好、功能齐全且稳定。 操作步骤&#xff1a; 方法一&#xff1a; 打开谷歌浏览器 --> 右上角三个点 --> 扩展程序 --> 管理扩展程序 --> 加载已解压的扩展程序&#xff0c; 然后选择解压后的文件夹即可。…...

鸿蒙OSUniApp打造多功能图表展示组件 #三方框架 #Uniapp

使用UniApp打造多功能图表展示组件 在当前移动应用开发领域&#xff0c;数据可视化已成为不可或缺的一部分。无论是展示销售数据、用户增长趋势还是其他业务指标&#xff0c;一个优秀的图表组件都能有效提升用户体验。UniApp作为一款跨平台开发框架&#xff0c;如何在其中实现…...

海量数据Top k 与查重问题

海量数据求top k 问题&#xff1a; - 求最大的前k个元素、求最小的前k个元素 - 求最大的第k个元素、求最小的第k个元素 解法&#xff1a; - 大根堆、小跟堆 -》 优先级队列&#xff08;priority_queue&#xff09; - 快速分割函数 priority_queue<int,vector<int>…...

Beats

Beats是一个开放源代码的数据发送器。我们可以把Beats作为一种代理安装在我 们的服务器上&#xff0c;这样就可以比较方便地将数据发送到Elasticsearch或者Logstash 中。Elastic Stack提供了多种类型的Beats组件。 Beats可以直接将数据发送到Elasticsearch或者发送到Logstash&a…...

微型PCB打样厂家选型指南

智能手机、可穿戴设备、医疗电子等高精尖领域&#xff0c;微型PCB&#xff08;印制电路板&#xff09;如同设备的“神经中枢”&#xff0c;承载着信号传输、电源分配、元件互联等核心功能。其设计精度与制造质量直接决定了产品的性能上限与可靠性。而打样环节&#xff0c;则是从…...

ISP有感自发

一、黑电平 由于传感器&#xff0c;即便在无光的情况下&#xff0c;依然会产生微小的暗电流&#xff0c;这些暗电流可能是噪点会影响后期的调试。因此&#xff0c;我们便将这些电流处理为0&#xff0c;成为纯黑的颜色。可以在源头消除这些误差。 如何矫正黑电平&#xff1a; …...

编程技能:字符串函数04,直接使用 strcpy,解决报错

专栏导航 本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏&#xff0c;故划分为两个专栏导航。读者可以自行选择前往哪个专栏。 &#xff08;一&#xff09;WIn32 专栏导航 上一篇&#xff1a;编程技能&#xff1a;字符串函数03&#xff0c;strncpy 回到目录…...

网络编程超时检测,unix域套接字,粘包

刷题&#xff1a; # 超时检测核心要点## 1. 基本类型### 阻塞模式- 永久等待数据&#xff0c;无超时机制- 典型函数&#xff1a;recv()阻塞调用### 非阻塞模式- 立即返回结果&#xff08;成功/错误&#xff09;- 设置方式&#xff1a;fcntl(fd, F_SETFL, O_NONBLOCK)### 超时检…...

springboot AOP 接口限流(基于IP的接口限流和黑白名单)

使用 Spring Boot 自定义注解和AOP实现基于IP的接口限流和黑白名单 在我们日常开发的项目中为了保证系统的稳定性&#xff0c;很多时候我们需要对系统做限流处理&#xff0c;它可以有效防止恶意请求对系统造成过载。常见的限流方案主要有&#xff1a; 网关限流&#xff1a; NG…...

Python uv包管理器使用指南:从入门到精通

Python uv包管理器使用指南&#xff1a;从入门到精通 作为一名Python开发者&#xff0c;你是否曾经为虚拟环境管理和依赖包安装而头疼&#xff1f;今天我要向大家介绍一个强大的工具——uv包管理器&#xff0c;它将彻底改变你的Python开发体验。 什么是uv包管理器&#xff1f…...

【计算机网络】TLS中的对称加密和非对称加密的应用,应对第三方抓包的双向https认证

TLS工作流程简化版 证书验证流程 客户端通过CA的公钥验证服务器数字证书的签名&#xff0c;确保服务器身份可信&#xff0c;防止中间人攻击。 预主密钥加密传输 客户端生成预主密钥&#xff0c;用服务器证书中的公钥加密后发送给服务器&#xff0c;只有服务器&#xff08;持有…...

Stable Diffusion WebUI 插件大全:功能详解与下载地址

Stable Diffusion WebUI 的强大之处在于其丰富的插件生态&#xff0c;这些插件可以大幅提升 AI 绘画的效率和质量。本文将详细介绍 21 个常用插件&#xff0c;包括它们的功能、效果说明以及下载地址&#xff0c;帮助你更好地使用 Stable Diffusion WebUI。 插件的安装方式 直…...

【行为型之策略模式】游戏开发实战——Unity灵活算法架构的核心实现策略

文章目录 &#x1f3ae; 策略模式&#xff08;Strategy Pattern&#xff09;深度解析一、模式本质与核心价值二、经典UML结构三、Unity实战代码&#xff08;动态伤害计算系统&#xff09;1. 定义策略接口与上下文2. 实现具体策略3. 客户端使用 四、模式进阶技巧1. 策略组合2. 策…...

第二十九节:直方图处理-直方图均衡化

在数字图像处理中,直方图均衡化(Histogram Equalization)是一种经典的对比度增强技术。它通过重新分配图像像素的亮度值,使图像的灰度级分布更加均匀,从而显著提升图像的视觉效果。 一、直方图基础 1.1 什么是直方图? 直方图(Histogram)是图像处理中用于描述图像像素…...

性能比拼: Nginx vs. Envoy

本内容是对知名性能评测博主 Anton Putra Nginx vs. Envoy performance benchmark 内容的翻译与整理, 有适当删减, 相关指标和结论以原作为准 Envoy 被设计为服务网格中的高性能代理。 你可以将它部署在虚拟机&#xff08;VM&#xff09;中&#xff0c;或作为 sidecar 方式部…...

在 C 语言中,U、UL、ULL、L、LL 等符号使用说明

在 C 语言中&#xff0c;U、UL、ULL、L、LL 等符号是用于明确指定整数字面量类型的后缀&#xff0c;其核心作用是避免数据类型隐式转换导致的溢出或未定义行为。以下是具体分类和使用场景&#xff1a; 一、整数字面量后缀分类 后缀全称适用场景示例说明Uunsigned100U无符号整数…...

一般枚举题目合集

一般枚举题目合集 枚举NOIP 2011 提高组 铺地毯P2327 [SCOI2005] 扫雷蓝桥真题 跑步蓝桥真题 猜年龄 二进制枚举常用的技巧整理子集 - 力扣P10449 费解的开关UVA11464 Even Parity通过Virtual Judge提交代码正解 日期枚举蓝桥真题 跑步NOIP 2016 普及组 回文日期日期统计 写这段…...

MCP(Model Context Protocol,模型上下文协议)

1. 起因&#xff0c; 目的: MCP, 貌似最近很火&#xff0c;简单了解一下&#xff0c; 跟上时代节奏。看似是一个工具&#xff0c;一个新概念&#xff0c;其实是个鸡肋&#xff08;仅仅代表个人观点&#xff09;。 2. 先看效果 这里插入图片 3. 过程: 问题1, 什么是 MCP h…...

MQTT 在Spring Boot 中的使用

在 Spring Boot 中使用 MQTT 通常会借助 Spring Integration 项目提供的 MQTT 支持。这使得 MQTT 的集成可以很好地融入 Spring 的消息驱动和企业集成模式。 以下是如何在 Spring Boot 中集成和使用 MQTT 的详细步骤&#xff1a; 前提条件&#xff1a; MQTT Broker&#xff…...