算法思想之双指针
文章目录
- 双指针
- 字符串序列判定
- 字符串所有整数最小和
- 服务交换接口失败率分析
- 分披萨
- 最多团队
双指针
- 双指针是指在解决问题时使用两个指针,通常分别指向数组或字符串中的不同位置,通过移动这两个指针来解决问题的一种技巧。双指针技巧常用于解决数组、链表或字符串相关的问题。
- 双指针常见的应用题型包括:
- 快慢指针:用于解决链表中的环检测、链表中间节点查找等问题。快慢指针可以帮助判断链表是否有环、找到链表的中间节点等。
- 对撞指针:又称为双指针夹逼法,通常用于解决数组或字符串中的查找问题。例如在有序数组中查找两数之和、三数之和等问题。
- 左右指针:使用两个指针分别从数组的两端开始向中间移动,用于解决数组或字符串中的问题,如判断是否存在某个目标值、查找满足条件的子数组等。
- 滑动窗口:双指针技巧在滑动窗口算法中有广泛应用。滑动窗口是一种解决字符串或数组子串问题的技巧,通过维护一个窗口来解决问题。
- 两数之和:给定一个数组和一个目标值,找到数组中的两个数使得它们的和等于目标值。双指针技巧可以用于解决这类问题。
- 双指针技巧通常能够提高问题的解决效率,减少时间复杂度,并且可以解决一些复杂的数据处理问题。根据具体问题的要求和特点,选择合适的双指针技巧来解决问题会更加高效。
字符串序列判定
-
题目描述
输入两个字符串 S 和 L,都只包含英文小写字母。S 长度 <=100,L 长度 <=500,000。判定 S 是否是 L 的有效子串。
判定规则:
S 中的每个字符在 L 中都能找到(可以不连续),且 S 在L中字符的前后顺序与 S 中顺序要保持一致。
(例如,S=”ace”是 L=”abcde”的一个子序列且有效字符是 a、c、e,而”aec”不是有效子序列,且有效字符只有 a、e)
输入描述
输入两个字符串 S 和 L,都只包含英文小写字母。S 长度<=100,L 长度<=500,000。先输入 S,再输入 L,每个字符串占一行。
输出描述
S 串最后一个有效字符在 L 中的位置。(首位从 0 开始计算,无有效字符返回 -1)
-
示例1
输入: ace abcde 输出:4
示例2
输入: fgh abcde 输出:-1
-
题解:双指针
- 使用双指针 i 和 j,分别指向字符串 S 和 L 的开头。
- 遍历字符串L,对于 L 的每个字符:
- 如果当前字符等于 S 的当前字符(即S[i] == L[j]),则移动 S 的指针 i,继续比较下一个字符
- 如果当前字符不等于 S 的当前字符,继续遍历 L 下一个字符
- 如果 S 的指针 i 移动到了末尾(即 i == len(S)),则说明 S 是 L 的有效子串,输出当前 L 的指针位置 j
- 如果遍历完 L 后,仍然没有找到有效子串,则输出 -1
import java.util.Scanner; public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNext()) {String S = sc.nextLine();String L = sc.nextLine();int sIndex = 0;int lastPos = -1;for (int i = 0; i < L.length(); i++) {if (sIndex == S.length()) {break;}if (S.charAt(sIndex) == L.charAt(i)) {lastPos = i;sIndex++;}}System.out.println(sIndex == S.length() ? lastPos : -1);}} }
字符串所有整数最小和
-
题目描述
输入字符串 s,输出 s 中包含所有整数的最小和。
说明:
字符串 s,只包含 a-z A-Z + -
合法的整数包括
- 正整数:一个或者多个0-9组成,如 0 2 3 002 102
- 负整数:负号 – 开头,数字部分由一个或者多个0-9组成,如 -0 -012 -23 -00023
输入要求
包含数字的字符串
输出要求
所有整数的最小和
-
用例1
输入:bb1234aa 输出:10
用例2
输入:bb12-34aa 输出:-31 说明:1+2+(-34) = -31
-
题解1
import java.util.Scanner; public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNext()) {String str = sc.nextLine();str += " "; // 处理字符串末尾为负数情况int sum = 0;int num = 0; // 数字前方为符号时拼接数字boolean flag = false; // 数字前方是否为负号char[] arr = str.toCharArray();for (int i = 0; i < arr.length; i++) {char c = arr[i];if (!Character.isDigit(c)) {if (flag) {sum -= num;num = 0;}flag = '-' == c;} else {if (flag) num = num * 10 + c - '0';else sum += c - '0';}}System.out.println(sum);}} }
题解2:双指针
从左到右扫描字符串,遇到数字时累加到结果中,遇到负号时将后面的负数减去。具体做法是使用两个指针 i 和 r,i 指向当前字符,r 指向负数的末尾。每次遇到负号时,将 r 移动到负数的末尾,将负数转换为整数后减去即可。
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNext()) {String str = sc.nextLine();int sum = 0;int r = 0;char[] arr = str.toCharArray();for (int i = 0; i < arr.length; i++) {char c = arr[i];if (Character.isDigit(c)) sum += c - '0';else if ('-' == c) {r = i + 1;while (r < arr.length && Character.isDigit(arr[r])) {r++; // 右指针指向负数后一个字符}sum -= i + 1 == r ? 0 : Integer.parseInt(str.substring(i + 1, r));i = r; // 计算完毕,移动左指针}}System.out.println(sum);}}}
服务交换接口失败率分析
-
题目描述
服务之间交换的接口成功率作为服务调用关键质量特性,某个时间段内的接口失败率使用一个数组表示,数组中每个元素都是单位时间内失败率数值,数组中的数值为 0 ~ 100 的整数,给定一个数值(minAverageLost)表示某个时间段内平均失败率容忍值,即平均失败率小于等于 minAverageLost,找出数组中最长时间段,如果未找到则直接返回 。
输入要求
输入有两行内容,
第一行为 minAverageLost
第二行为(数组),数组元素通过空格(“ “)分隔。
minAverageLost 及数组中元素取值范围为 0−100 的整数,数组元素的个数不会超过 100 个
输出要求
找出平均值小于等于 minAverageLost 的最长时间段,输出数组下标对,格式 (beginindex) - (endindx)(下标从0开始),如果同时存在多个最长时间段,则输出多个下标对与下标对之间使用空格(” ”)拼接,多个下标对按下标对从小到大排序。
如果不存在满足条件的时间段,则输出
NULL
。 -
用例1
输入: 1 0 1 2 3 4 输出:0-2
用例2
输入: 2 0 0 100 2 2 99 0 2 输出:0-1 3-4 6-7
-
题解1
import java.util.*; public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNextLine()) {int k = Integer.parseInt(sc.nextLine());String[] arr = sc.nextLine().split(" ");ArrayList<String> list = new ArrayList<>();int l = 0; int maxLen = 0; int sum = 0;for (int r = 0; r < arr.length; r++) {sum += Integer.parseInt(arr[r]);int len = r - l + 1; // 左右指针长度,指向同一个位置时长度为1if ((double) sum / len > k) {sum = 0; // 重置左右指针间的数值和l = r + 1; // 移动左指针指向下一个数字} else {if (len > maxLen) list.clear(); // 新的最大长度,清空小于该长度的时间段if (len >= maxLen) list.add(l + "-" + r);maxLen = Math.max(maxLen, len); // 更新最大长度}}if (list.isEmpty()) System.out.println("NULL");for (int i = 0; i < list.size(); i++) {if (i == list.size()-1) System.out.println(list.get(i));else System.out.print(list.get(i) + " ");}}} }
分披萨
-
题目描述
"吃货"和"馋嘴"两人到披萨店点了一份铁盘(圆形)披萨,并嘱咐店员将披萨按放射状切成大小相同的偶数个小块。但是粗心的服务员将披萨切成了每块都完全不同奇数块,且肉眼能分辨出大小。
由于两人都想吃到最多的披萨,他们商量了一个他们认为公平的分法:从"吃货"开始,轮流取披萨。除了第一块披萨可以任意选取外,其他都必须从缺口选。
他俩选披萨的思路不同。"馋嘴"每次都会选最大块的披萨,而且"吃货"知道"馋嘴"的想法。
已知披萨小块的数量以及每块的大小,求"吃货"能分得的最大的披萨大小的总和。
输入要求
第 1 行为一个正整数奇数 N,表示披萨小块数量,其中 3 ≤ N < 500。接下来的第 2 行到第 N + 1 行(共 N 行),每行为一个正整数,表示第 i 块披萨的大小,其中 1 ≤ i ≤ N。
披萨小块从某一块开始,按照一个方向次序顺序编号为 1 ∼ N,每块披萨的大小范围为 [1, 2147483647]
输出要求
"吃货"能分得到的最大的披萨大小的总和。
-
用例1
输入: 5 8 2 10 5 7 输出:19 说明: 此例子中,有 5 块披萨。每块大小依次为 8、2、10、5、7。 按照如下顺序拿披萨,可以使"吃货"拿到最多披萨: “吃货” 拿大小为 10 的披萨 “馋嘴” 拿大小为 5 的披萨 “吃货” 拿大小为 7 的披萨 “馋嘴” 拿大小为 8 的披萨 “吃货” 拿大小为 2 的披萨 至此,披萨瓜分完毕,"吃货"拿到的披萨总大小为 10 +7 + 2 = 19 可能存在多种拿法,以上只是其中一种。
-
题解
import java.util.*; public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNext()) {int n = sc.nextInt();ArrayList<Integer> list = new ArrayList<>();for (int i = 0; i < n; i++) {list.add(sc.nextInt());}Integer max = Collections.max(list); // 先拿最大的一块int maxIndex = list.indexOf(max);int ret = max, l = check(maxIndex - 1, n), r = check(maxIndex + 1, n);for (int i = 0; i < (n-1) / 2; i++) { // 除去最大一块后,轮流拿(n-1)/2次ret += Math.min(list.get(l), list.get(r));l = check(l - 1, n);r = check(r + 1, n);}System.out.println(ret);}}public static int check(int i, int n) {if (i < 0) return n - 1;else if (i > n - 1) return 0;else return i;} }
最多团队
-
题目描述
用数组代表每个人的能力,一个比赛活动要求参赛团队的最低能力值为 N,每个团队可以由 1 人或者 2 人组成,且 1 个人只能参加 1 个团队,计算出最多可以派出多少只符合要求的团队。
输入要求
第一行代表总人数,范围 1-500000
第二行数组代表每个人的能力
数组大小,范围 1-500000
元素取值,范围 1-500000
第三行数值为团队要求的最低能力值,范围 1-500000
输出要求
最多可以派出的团队数量
-
用例1
输入: 5 3 1 5 7 9 8 输出:3 说明:说明 3、5组成一队 1、7一队 9自己一队 输出3
用例2
输入: 7 3 1 5 7 9 2 6 8 输出:4 说明:3、5组成一队,1、7一队,9自己一队,2、6一队,输出4
用例3
输入: 3 1 1 9 8 输出:1 说明:9自己一队,输出1
-
题解1
import java.util.*; public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNext()) {int n = sc.nextInt();int[] arr = new int[n];for (int i = 0; i < n; i++) arr[i] = sc.nextInt();int k = sc.nextInt();Arrays.sort(arr);int l = 0; int r = n - 1; int count = 0;while (r >= l) {if (arr[r] >= k) { // 单人参赛count++; r--;} else if (arr[l] + arr[r] >= k) {count++; l++; r--;} else if (arr[l] + arr[r] < k) {l++; // 能力太差,要么不参赛,要么跟可以单人参赛的人一起参赛}}System.out.println(count);}} }
相关文章:
算法思想之双指针
文章目录 双指针字符串序列判定字符串所有整数最小和服务交换接口失败率分析分披萨最多团队 双指针 双指针是指在解决问题时使用两个指针,通常分别指向数组或字符串中的不同位置,通过移动这两个指针来解决问题的一种技巧。双指针技巧常用于解决数组、链…...
Windows环境下PyCharm 配置miniforge
问题描述. 目前Anconda python 环境管理软件,已非常臃肿。为了替代该软件,可以使用miniforge软件来代替。 1. 安装windows miniforge软件 (1) 下载网站:https://github.com/conda-forge/miniforge?tabreadme-ov-file 从网址下载ÿ…...
C语言基础18
内容提要 构造类型 结构体 共用体/联合体 枚举 typedef 构造类型 数据类型 基本类型/基础类型 整型 短整型:short [int] -- 2字节 基本整型:int -- 4字节 长整型:long [int] -- 32位4字节/64位8字节 长长整型:long long…...
Docker部署Jenkins服务
文章目录 1.下载Jenkins服务2.部署Java21(可选)2.1 安装Java21 3.Maven3.9.9安装4.启动Jenkins5.初始化Jenkins5.1 入门5.2 安装推荐的插件5.3 创建第一个管理员用户5.4 实例配置5.5 Jenkins已就绪5.6 开始使用Jenkins5.7 重启Jenkins 6.配置Jenkins6.1 …...
【题解-Acwing】798. 差分矩阵
题目:798. 差分矩阵 题目描述 输入一个n行m列的整数矩阵,再输入q个操作,每个操作包含五个整数 x1,y1,x2,y2,c,其中 (x1,y1)和 (x2,y2)表示一个子矩阵的左上角坐标和右下角坐标。 每个操作都要将选中的子矩阵中的每个元素的值加…...
linux环境下的硬盘分区格式化工具介绍 fdisk,gdisk,parted,cfdisk,cgdisk,sfdisk,gparted 笔记250407
linux环境下的硬盘分区格式化工具介绍 fdisk,gdisk,parted,cfdisk,cgdisk,sfdisk,gparted 笔记250407 以下是 Linux 系统中常用的 硬盘分区与格式化工具,涵盖命令行和图形界面工具,按功能分类整理: 一、分区管理工具 1. 命令行工具 工具功能…...
Ubuntu 24.04 LTS系统安装RTX 4090显卡驱动和cuda并部署ollama下载DeepSeek模型【自用详细版】
自己捣鼓玩玩哈,正好有机子 1. 安装驱动前的系统配置工作 卸载原有驱动并禁用nouveau sudo apt remove --purge nvidia*sudo cp /etc/modprobe.d/blacklist.conf /etc/modprobe.d/blacklist.conf.backup //备份文件sudo vim /etc/modprobe.d/blacklist.conf //修…...
FogFL: Fog-Assisted Federated Learning for Resource-Constrained IoT Devices
摘要 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 -在本文中,我们提出了一个支持雾的联邦学习框架–FogFL–来促进资源受限的物联网环境中延迟敏感应用的分布式学习。联邦学习(FL)是一种流行的分…...
音视频入门基础:RTCP专题(2)——RTCP协议简介(上)
一、引言 本文对RTCP协议进行简介。在简介之前,请各位先下载RTCP的官方文档《RFC 3550》。《RFC 3550》总共有89页。本文下面所说的“页数”是指在pdf阅读器中显示的页数: 二、RTCP协议简介 本段内容对应《RFC 3550》的第6节。根据《RFC 3550》第17页&…...
oklink js逆向(入口定位)
分析api请求,定位参数 X-Apikey 搜索关键字apikey,发现结果太多 结合搜索结果,搜索关键字 apikey(,只找到5个 断点后定位 可见使用了字符串混淆,所以搜索不到 x-apikey 还可以通过搜索 headers,追踪调用栈的…...
go原子操作和锁的区别是什么?
在Go语言中,原子操作和锁都是用于实现并发编程的同步机制,但它们的工作方式和适用场景有所不同。下面是它们的主要区别: 1. 原子操作(Atomic Operations) 定义:原子操作是一种不可分割的操作,…...
QtConcurrent
以下是 QtConcurrent 的一些常见用法示例: QtConcurrent::run QtConcurrent::run 是最常用的函数,用于在单独的线程中运行一个函数。 运行普通函数 #include <QtConcurrent> #include <QDebug> #include <QThread>void myFunction…...
Git 仓库在内网与 Gitee 间迁移及同步记录
Git 仓库在内网与 Gitee 间迁移及同步记录 在软件开发过程中,常常会遇到需要将代码仓库进行迁移或同步的情况。近期我就碰到了要把 Gitee 代码仓库移植到内网代码仓库,并且后续还得进行同步的需求。这里把整个过程记录下来,方便以后自己参考…...
如何保证mysql和redis的数据一致性
保证 MySQL 和 Redis 的数据一致性是分布式系统中常见的挑战,因为 Redis 作为缓存层,可能存在与底层数据库数据不一致的情况。以下是几种常用的方案及其优缺点对比: 1. 缓存更新策略 (1) Cache-Aside Pattern(旁路缓存模式&#…...
Java学习——day23(反射的对象创建与方法调用)
文章目录 1. 使用反射实例化对象1.1 利用无参构造函数创建对象1.2利用带参构造函数创建对象 2.通过反射调用对象方法2.1 调用公共方法2.2 调用私有方法(需设置访问权限)3. 访问和修改对象的属性3.1 公共属性3.2 私有属性 4. 实践任务4.1工厂类 SimpleFac…...
遇到无法连接香港服务器可能是什么原因导致的呢
遇到无法连接香港服务器的情况时,别急着重启或联系客服,先搞清楚到底是哪里断了链条。问题可能出在服务器本身,也可能是你的本地网络、路由路径、DNS、甚至运营商的“干预”。以下是常见的几个可能原因,建议你可以逐一排查&#x…...
Python----计算机视觉处理(Opencv:道路检测完整版:透视变换,提取车道线,车道线拟合,车道线显示,)
Python----计算机视觉处理(Opencv:道路检测之道路透视变换) Python----计算机视觉处理(Opencv:道路检测之提取车道线) Python----计算机视觉处理(Opencv:道路检测之车道线拟合) Python----计算机视觉处理࿰…...
javaweb自用笔记:Maven分模块设计与开发、Maven继承与聚合、Maven私服
Maven分模块设计与开发 Maven继承与聚合 继承 版本锁定 dependencies引入依赖,dependencyManagement不代表依赖被引入,如果要使用dependencyManagement下的依赖,还需要在dependencies里面定义 聚合 如果没有用聚合,将这个项目打…...
在PyCharm中出现 **全角字符与非英文符号混合输入** 的问题
在PyCharm中出现 全角字符与非英文符号混合输入 的问题(如 124345dfs$¥cvd)࿰…...
数字身份DID协议:如何用Solidity编写去中心化身份合约
本文提出基于以太坊的自主主权身份(SSI)实现方案,通过扩展ERC-734/ERC-735标准构建链上身份核心合约,支持可验证声明、多密钥轮换、属性隐私保护等特性。设计的三层架构体系将身份控制逻辑与数据存储分离,在测试网环境…...
Linux的RPM包管理详解
Linux的RPM包管理详解 引言 RPM(Red Hat Package Manager)是Linux系统中一种重要的软件包管理工具,它以“.rpm”为扩展名,广泛应用于基于Red Hat的Linux发行版,如CentOS、Fedora、openSUSE等。RPM包不仅简化了软件包…...
其它理论原则
ABC理论 假设(Assumption)影响行为(Behavior),行为最终影响结果(Consequence)。 如果产品经理认为同事是一个不讲道理的人,那么产品经理在和他交流时就会产生抵触的行为,…...
C++中的类和对象(上)
1 类的定义 1.1 类定义的格式 1 class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省 略》。类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者成员函数…...
LLaMA-Factory 数据集成从入门到精通
一、框架概述 LLaMA-Factory 框架通过Alpaca/Sharegpt双格式体系实现多任务适配,其中Alpaca专注结构化指令微调(含SFT/DPO/预训练),Sharegpt支持多角色对话及多模态数据集成。核心配置依托 dataset_info.json 实现数据源映射、格…...
高级:JVM面试题深度剖析
一、引言 在Java技术面试中,JVM(Java虚拟机)相关知识是考察重点之一。深入理解JVM的内存模型、垃圾回收机制、类加载机制等,不仅能帮助开发者优化Java应用性能,还能在面试中展现深厚的技术功底。本文将针对这些高频知…...
Spring MVC 中 @ResponseBody 注解深度使用教程
一、注解核心作用 ResponseBody 是 Spring MVC 中处理 响应体内容 的核心注解,主要功能: 跳过视图解析器:直接返回数据而非视图名称自动数据转换:根据返回值类型自动转换响应格式(JSON/XML/纯文本)RESTfu…...
数据结构第一轮复习--第七章查找(包含课程代码)
基于数组实现顺序查找代码 //顺序查找的实现 typedef struct{ //查找表的数据结构(顺序表) ElemType *elem; //指向开辟的动态数组基址 (起始地址) int TableLen; //表的长度 }SSTable; //顺序查找 int Search_Seq(SSTable ST…...
Springboot JPA 集成ShardingSphere
Spring Boot集成JPA与ShardingSphere可通过以下步骤实现分库分表功能,需重点关注依赖配置、分片规则定义及JPA适配问题: 一、依赖配置 1. 引入核心依赖 在pom.xml中添加ShardingSphere和JPA相关依赖: <!-- ShardingSphere JDBC --&…...
详细介绍javaspringboot操控redis的高级特性1. 事务支持2. 发布/订阅3. Pipeline批量操作
Spring Boot 对 Redis 的操作提供了丰富的高级特性,以下是对事务支持、发布 / 订阅、Pipeline 批量操作的详细介绍: 事务支持 原理:Redis 事务是一个单独的隔离操作,它可以包含多个命令,这些命令要么全部执行&#x…...
第一次3D打印,一个简单的小方块(Rhino)
一、建模 打开犀牛,我们选择立方体 我们点击上册的中心点 输入0,然后回车0 而后我们输长度:10,回车确认 同样的,宽度10 高度同样是10 回车确认后,我们得到一个正方形 二、导出模型 我们选择文件—>保存…...
数据分享:汽车测评数据
说明:如需数据可以直接到文章最后关注获取。 1.数据背景 Car Evaluation汽车测评数据集是一个经典的机器学习数据集,最初由 Marko Bohanec 和 Blaz Zupan 创建,并在 1997 年发表于论文 "Classifier learning from examples: Common …...
硬盘分区格式之GPT(GUID Partition Table)笔记250406
硬盘分区格式之GPT(GUID Partition Table)笔记250406 GPT(GUID Partition Table)硬盘分区格式详解 GPT(GUID Partition Table)是替代传统 MBR 的现代分区方案,专为 UEFI(统一可扩展固…...
辉视智慧医院:以科技温度 重塑医疗未来新生态
大家是否想过,医院里的广播对讲系统也能变身‘智慧管家’?今天带您走进辉视智慧医院,看看他们如何用四大黑科技,让医患沟通更暖心、更高效! 一、物联网技术:医疗设备‘开口说话’,广播系统秒变‘…...
Google 发布 Sec-Gemini v1:用 AI 重塑网络安全防御格局?
在网络威胁日益复杂化、自动化程度不断提高的今天,防御方常常感到力不从心。为了扭转这一局面,Google 近日迈出了重要一步,宣布推出专为网络安全领域量身打造的实验性 AI 模型——Sec-Gemini v1。该模型由 Google 内部的 Sec-Gemini 团队成员…...
Android 使用ninja加速编译的方法
ninja的简介 随着Android版本的更迭,makefile体系逐渐增多,导致make单编模块的时间越来越长,每次都需要半个小时甚至更长时间,其原因为每次make都会重新加载所有mk文件,再生成ninja编译,此完整过程十分耗时…...
windterm终端软件使用
windterm终端软件使用 下载安装包:https://github.com/kingToolbox/WindTerm/releases ssh连接: 可以复用vscode连接ssh信息 onekey 相当于服务器主机的用户名和密码 点击配置标签如Linux,输入用户名如root, identity file指定本地公钥&a…...
《操作系统真象还原》第六章——完善内核
文章目录 [toc]前言调用约定和混合编程调用约定混合编程 实现打印函数print.S显卡的端口控制实现单个字符打印put_char定义数据类型put_char编码修改内核main.c验证put_char 实现字符串打印put_str 结语 前言 学完上一章后,我们已经完成了一个操作系统最基本的三个…...
上海餐饮市场数据分析与可视化
上海作为中国的经济中心和国际化大都市,其餐饮市场具有高度的多样性和竞争性。随着消费者需求的不断变化,餐饮行业的从业者和投资者需要深入了解市场现状和趋势,以便制定更有效的商业策略。本文将通过数据分析和可视化技术,深入探讨上海餐饮市场的现状和趋势,为餐饮从业者…...
不花钱也能玩GPT-4o,国内可用
家人们!最近GPT-4o生图功能真的离谱到不真实,各种吉卜力、宫崎骏、3D风格等刷爆小红书。 由于只有GPT官网,只有Plus用户才能用,很多小伙伴们都没有机会体验过GPT,本期就分享一个国内也能直接玩的方法。 第一步&#x…...
ResNet改进(22):提升特征选择能力的卷积神经网络SKNet
在计算机视觉领域,残差网络(ResNet)一直是图像分类任务中的经典架构。本文将介绍一种改进版的ResNet18,它融合了选择性核(SK)机制,能够自适应地调整不同感受野的特征权重,从而提升模型性能。下面我们将详细解析这个实现代码。 一、代码概述 这个Python脚本实现了一个带有S…...
实战代码:esp32-cam按钮控制手机拍照V1.0
#include <WiFi.h> #include <HTTPClient.h> // WiFi设置 const char* ssid “MIFI-020806-2.4G”; const char* password “12345678”; // 静态IP配置 IPAddress staticIP(192, 168, 1, 32); // 设置为固定IP IPAddress gateway(192, 168, 1, 1); // 网关地址…...
Base64是密码吗?编码与加密的本质区别
(本文完全由deepseek生成,特此声明!) 引言:一个让开发者“翻车”的经典误区 我们常看到类似这样的提问: “我用Base64加密了用户的密码,为什么还是被黑客破解了?” “Base64解…...
原理图输出网表及调入
一、输出网表操作步骤 (1)选中.dsn文件,选者N或进入tools下拉列表选择Creat Netlists (2)导出网表后的文件 二、网表的导入 (1)执行菜单命令“File-Import-Logic/netlist”,将原理…...
C++ 模板的应用——智能指针、STL库
#include "head.h" #include <stdio.h> using namespace std;void registerUser(vector<string>& number,vector<string>& passwd){string username;string Passwd;cout << "请输入账号:" << endl;cin >> use…...
基于层次建模与交叉注意力融合的医学视觉问答系统(HiCA-VQA)详解
论文地址:https://arxiv.org/pdf/2504.03135 一、论文结构概述 这篇论文提出了一种针对医学视觉问答(Medical Visual Question Answering, Med-VQA)的层次化建模框架 HiCA-VQA,旨在解决现有方法在层次化语义建模和跨模态融合上的不足。以下是论文的核心结构: 引言 介…...
比较与分析敏捷开发方法:XP、Scrum、FDD等的特点与适用场景
目录 前言1. 极限编程 (XP)1.1 极限编程的核心特点1.2 极限编程的适用场景 2. Scrum2.1 Scrum的核心特点2.2 Scrum的适用场景 3. 水晶方法 (Crystal)3.1 水晶方法的核心特点3.2 水晶方法的适用场景 4. 特征驱动开发 (FDD)4.1 特征驱动开发的核心特点4.2 特征驱动开发的适用场景…...
ICMP 协议深度解析
ICMP 协议深度解析 一、协议定位与核心作用 ICMP(互联网控制报文协议)是IP协议体系的"哨兵系统",专用于网络状态监控与异常反馈。其核心价值体现在: 轻量级控制:仅传递关键状态信息,不承载业务…...
C语言基础20
内容提要 预处理 库文件 预处理 C语言编译步骤 预处理 编译 汇编 链接 什么是预处理 预处理就是在源文件(.c文件)编译之前,所进行的一部分预备操作,这部分操作是由预处理程序自动完成。当源文件在编译时,编译…...
conda常用命令
要查看使用conda创建的虚拟环境,可以按照以下步骤操作: 打开终端或命令行工具:确保你已经打开了终端或命令行界面,以便输入conda命令。 输入命令查看环境列表: 使用以下任一命令查看conda创建的虚拟环境:…...
Ubunut18.04 离线安装MySQL 5.7.35
一、环境准备 1.1 官方下载MySQL5.7.35 完整包 1.2 上传包 & 解压 上传包名称是:mysql-server_5.7.35-1ubuntu18.04_amd64.deb-bundle.tar # 切换到上传目录 cd /home/MySQL # 解压: tar -xvf mysql-server_5.7.35-1ubuntu18.04_amd64.deb-bundle…...