《剑指Offer》笔记题解思路技巧优化 Java版本——新版leetcode_Part_5
《剑指Offer》笔记&题解&思路&技巧&优化_Part_5
- 😍😍😍 相知
- 🙌🙌🙌 相识
- 😢😢😢 开始刷题
- 🟢1. LCR 158. 库存管理 II——数组中出现次数超过一半的数字
- 🟢2. LCR 159. 库存管理 III——最小的k个数
- 🔴3. LCR 160. 数据流中的中位数——数据流中的中位数
- 🟢4. LCR 161. 连续天数的最高销售额——连续子数组的最大和
- 🔴5. LCR 162. 数字 1 的个数——1~n整数中1出现的次数
- 🟡6. LCR 163. 找到第 k 位数字——数字序列中某一位的数字
- 🟡7. LCR 164. 破解闯关密码——把数组排成最小的数
- 🟡8. LCR 165. 解密数字——把数字翻译成字符串
- 🟡9. LCR 166. 珠宝的最高价值——礼物的最大价值
- 🟡10. LCR 167. 招式拆解 I——最长不含重复字符的子字符串

😍😍😍 相知
当你踏入计算机科学的大门,或许会感到一片新奇而陌生的领域,尤其是对于那些非科班出身的学子而言。作为一位非科班研二学生,我深知学习的道路可能会充满挑战,让我们愿意迎接这段充满可能性的旅程。
最近,我开始了学习
《剑指Offer》和Java编程的探索之旅。这不仅是一次对计算机科学的深入了解,更是对自己学术生涯的一次扩展。或许,这一切刚刚开始,但我深信,通过努力与坚持,我能够逐渐驾驭这门技艺。在这个博客中,我将深入剖析
《剑指Offer》中的问题,并结合Java编程语言进行解析。让我们一起踏上这段学习之旅,共同奋斗,共同成长。无论你是已经驾轻就熟的Java高手,还是像我一样初出茅庐的学子,我们都能在这里找到彼此的支持与激励。让我们携手前行,共同迎接知识的挑战,为自己的未来打下坚实的基石。
这是我上一篇博客的,也希望大家多多关注!
- 《剑指Offer》笔记&题解&思路&技巧&优化 Java版本——新版leetcode_Part_1
- 《剑指Offer》笔记&题解&思路&技巧&优化 Java版本——新版leetcode_Part_2
- 《剑指Offer》笔记&题解&思路&技巧&优化 Java版本——新版leetcode_Part_3
- 《剑指Offer》笔记&题解&思路&技巧&优化 Java版本——新版leetcode_Part_4
🙌🙌🙌 相识
根据题型可将其分为这样几种类型:
- 结构概念类(数组,链表,栈,堆,队列,树)
- 搜索遍历类(深度优先搜索,广度优先搜索,二分遍历)
- 双指针定位类(快慢指针,指针碰撞,滑动窗口)
- 排序类(快速排序,归并排序)
- 数学推理类(动态规划,数学)
😢😢😢 开始刷题
🟢1. LCR 158. 库存管理 II——数组中出现次数超过一半的数字
题目跳转:https://leetcode.cn/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/description/
排序法
class Solution {public int inventoryManagement(int[] stock) {//复杂度O(nlgn)Arrays.sort(stock);return stock[stock.length/2];}
}
摩尔投票法
要投票当领导 依次遍历 我们知道众数的领导一定赢 如果不一样 就抵消!

class Solution {public int inventoryManagement(int[] stock) {if(stock.length <= 2){return stock[0];}int x = stock[0];int sum = 1;for(int i =1;i<stock.length;i++){if(sum == 0){x = stock[i];sum = 1;}else{if(x == stock[i]){sum++;} else {sum--;}}}return x;}
}
🟢2. LCR 159. 库存管理 III——最小的k个数
题目跳转:https://leetcode.cn/problems/zui-xiao-de-kge-shu-lcof/description/
排序
class Solution {public int[] inventoryManagement(int[] stock, int cnt) {if(cnt>=stock.length)return stock;Arrays.sort(stock);int[] result = new int [cnt];for(int i = 0;i<cnt;i++){result[i] = stock[i];}return result;}
}
学会个函数
class Solution {public int[] inventoryManagement(int[] stock, int cnt) {if(cnt>=stock.length)return stock;Arrays.sort(stock);return Arrays.copyOfRange(stock, 0, cnt);}
}
快排
class Solution {public int[] getLeastNumbers(int[] arr, int k) {if (k == 0 || arr.length == 0) {return new int[0];}// 最后一个参数表示我们要找的是下标为k-1的数return quickSearch(arr, 0, arr.length - 1, k - 1);}private int[] quickSearch(int[] nums, int lo, int hi, int k) {// 每快排切分1次,找到排序后下标为j的元素,如果j恰好等于k就返回j以及j左边所有的数;int j = partition(nums, lo, hi);if (j == k) {return Arrays.copyOf(nums, j + 1);}// 否则根据下标j与k的大小关系来决定继续切分左段还是右段。return j > k? quickSearch(nums, lo, j - 1, k): quickSearch(nums, j + 1, hi, k);}// 快排切分,返回下标j,使得比nums[j]小的数都在j的左边,比nums[j]大的数都在j的右边。private int partition(int[] nums, int lo, int hi) {int v = nums[lo];int i = lo, j = hi + 1;while (true) {while (++i <= hi && nums[i] < v);while (--j >= lo && nums[j] > v);if (i >= j) {break;}int t = nums[j];nums[j] = nums[i];nums[i] = t;}nums[lo] = nums[j];nums[j] = v;return j;}
}
🔴3. LCR 160. 数据流中的中位数——数据流中的中位数
题目跳转:https://leetcode.cn/problems/shu-ju-liu-zhong-de-zhong-wei-shu-lcof/description/
直接重排变成有序数组 挺暴力的
class MedianFinder {List<Integer> list = null;/** initialize your data structure here. */public MedianFinder() {list = new ArrayList<>();}public void addNum(int num) {list.add(num);}public double findMedian() {Collections.sort(list);if(list.size() % 2 == 0){return (double)(list.get(list.size()/2 -1) + list.get(list.size()/2))/2.0;}else{return (double)list.get(list.size()/2);}}
}
大根堆和小根堆

class MedianFinder {Queue<Integer> min, max;/** initialize your data structure here. */public MedianFinder() {min = new PriorityQueue<>(); // ⼩根,保存较⼤的max = new PriorityQueue<>((x, y) -> (y - x));// ⼤根}public void addNum(int num) {// 如果是偶数if(min.size() == max.size()){min.add(num);max.add(min.poll());} else {max.add(num);min.add(max.poll());}}public double findMedian() {// 如果是偶数if(min.size() == max.size()){return (min.peek() + max.peek()) / 2.0;} else {return max.peek() * 1.0;}}
}
🟢4. LCR 161. 连续天数的最高销售额——连续子数组的最大和
题目跳转:https://leetcode.cn/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/description/
class Solution {public int maxSales(int[] sales) {int[] maxsale = new int[sales.length];int sum = -101;maxsale[0] = sales[0];sum = Math.max(sum,maxsale[0]);for(int i = 1;i<sales.length;i++){if(maxsale[i-1]>=0){maxsale[i] = maxsale[i-1]+sales[i];}else{maxsale[i] = sales[i];}sum = Math.max(sum,maxsale[i]);}return sum;}
}
🔴5. LCR 162. 数字 1 的个数——1~n整数中1出现的次数
题目跳转:https://leetcode.cn/problems/1nzheng-shu-zhong-1chu-xian-de-ci-shu-lcof/description/
给定一个整数 num,计算所有小于等于 num 的非负整数中数字 1 出现的个数。
示例 1:
输入:num = 0 输出:0 示例 2:
输入:num = 13 输出:6
解释:1(1次)、10(1次)、11(2次)、12(1次)、13(1次) 共 6次
如果你想的是这个,别想了 超时警告
class Solution {
public:int countDigitOne(int n) {int count = 0;for (int i = 1; i <= n; i++) {count += countOne(i);}return count;}int countOne(int n) {int num = 0;while (n) {if (n % 10 == 1) {num++;}n /= 10;}return num;}
};```
//3101592/**计算从1-n出现1的总次数*就是计算1-n所有整数 个位+十位+百位+..为1的总和*举个例子:把百位固定*3101 5 92 我们把百位 5>1 取出来 *5前面可以取0-3101,5后面可以取0-99*一共有(3101+1)*100(百位)种组合使百位为1**再举个例子:把千位固定*310 1 592 我们把千位1=1取出来 这里可以分两种情况:* 1前面可以取0-309时 1后面可以取0-999* 1前面取310,1后面可以取0-592*一共有(310)*1000(千位)+(592+1)种组合使千位为1*再举最后一个例子:把万位固定*31 0 1592,把万位0<1 前面可以取0-30,0后面可以取0-9999*一共有(31)*10000(万位)种组合使万位为1*我们可以分别计算一个数的个位百位...对应的组合数,最后相加*基本情况就是上面的例子,分别对应的位元素 是大于1,等于1,等于0*/
class Solution {public int digitOneInNumber(int num) {if(num<=0)return 0;long base = 1;long res = 0;while(base<=num){long b = num % base;long a = num / base;long cur = a%10;a/=10;if(cur>1)res +=(a+1)*base;else if(cur==1) res +=(a*base+b+1);else res += a*base;base*=10;}return (int)res;}
}
🟡6. LCR 163. 找到第 k 位数字——数字序列中某一位的数字
题目跳转:https://leetcode.cn/problems/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof/description/
/* 数字范围 数量 位数 占多少位1-9 9 1 9*1=910-99 90 2 90*2=180100-999 900 3 900*3=27001000-9999 9000 4 9000*4=36000 ...例如 2901 = 9 + 180 + 2700 + 12 即一定是4位数,第12位 n = 12;数据为 = 1000 + (12 - 1)/ 4 = 1000 + 2 = 1002定位1002中的位置 = (n - 1) % 4 = 3 s.charAt(3) = 2;
*/
class Solution {public int findKthNumber(int n) {if(n<=9)return n;long bit = 1;int i = 1;long count = 9;while(count < n){n = (int)(n - count);bit = bit * 10;i++;count = bit * i * 9;}// 确定是在这个区间的哪个数long num = bit + (n - 1) / i;// 确定在 Num 的那个字符int index = (n - 1) % i + 1;int res = (int)(num / Math.pow(10, i - index)) % 10;return res;}
}
🟡7. LCR 164. 破解闯关密码——把数组排成最小的数
题目跳转:https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/description/
class Solution {public String crackPassword(int[] password) {String[] passwordstring = new String[password.length];for(int i = 0;i < password.length;i++){//passwordstring[i] = password[i]+"";passwordstring[i] = String.valueOf(password[i]);}StringBuilder stringbuilder = new StringBuilder();Arrays.sort(passwordstring,(a,b)-> ((a+b).compareTo(b+a)));for(int i = 0;i < passwordstring.length;i++){stringbuilder.append(passwordstring[i]);}return stringbuilder.toString();}
}
学习快排

class Solution {public String crackPassword(int[] password) {String[] passwordstring = new String[password.length];for(int i = 0;i < password.length;i++){//passwordstring[i] = password[i]+"";passwordstring[i] = String.valueOf(password[i]);}quickSort(passwordstring,0,passwordstring.length-1);StringBuilder stringbuilder = new StringBuilder();for(int i = 0;i < passwordstring.length;i++){stringbuilder.append(passwordstring[i]);}return stringbuilder.toString();}public void quickSort(String[] arr,int left ,int right){if(left>right){return;}int i = partition(arr, left, right);quickSort(arr, left, i - 1);quickSort(arr, i + 1, right);}int partition(String[] arr, int left, int right){String pivot = arr[left]; // 中间值int i = left;int j = right;while (i < j) {while (i <= j && (arr[i] + pivot).compareTo(pivot +arr[i]) <= 0) {i++;}while (i <= j && (arr[j] + pivot).compareTo(pivot +arr[j]) >= 0) {j--;}if(i >= j){break;}String temp = arr[i];arr[i] = arr[j];arr[j] = temp;}arr[left] = arr[j];arr[j] = pivot;return j;}
}
🟡8. LCR 165. 解密数字——把数字翻译成字符串
题目跳转:https://leetcode.cn/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/description/
class Solution {public int crackNumber(int ciphertext) {String string = ciphertext+"";int temp = string.length();int [] dp = new int[temp+1];dp[0] = 1;dp[1] = 1;for(int i = 2;i<=temp;i++){if(string.charAt(temp-i)>'2'||string.charAt(temp-i)=='0'){dp[i] = dp[i-1];}else if (string.charAt(temp-i)=='2'){if(string.charAt(temp-i+1)<='5'){dp[i]=dp[i-1]+dp[i-2];}else{dp[i] = dp[i-1];}}else{dp[i]=dp[i-1]+dp[i-2];}}return dp[temp];}
}
🟡9. LCR 166. 珠宝的最高价值——礼物的最大价值
题目跳转:https://leetcode.cn/problems/li-wu-de-zui-da-jie-zhi-lcof/description/
class Solution {public int jewelleryValue(int[][] frame) {if(frame.length==0||frame[0].length==0)return 0;// 动态规划int [][] dp = new int[frame.length][frame[0].length];for(int i = 0;i<frame.length;i++){for(int j = 0;j<frame[i].length;j++){if(i==0&&j==0){dp[i][j] = frame[i][j];}else if(i!=0&&j==0){dp[i][j] = frame[i][j]+dp[i-1][j];}else if(j!=0&&i==0){dp[i][j] = frame[i][j]+dp[i][j-1];}else{dp[i][j] = frame[i][j]+Math.max(dp[i-1][j],dp[i][j-1]);}}}return dp[frame.length-1][frame[0].length-1];}
}
🟡10. LCR 167. 招式拆解 I——最长不含重复字符的子字符串
题目跳转:https://leetcode.cn/problems/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof/description/
自己写的

class Solution {public int dismantlingAction(String arr) {if(arr.length()==0||arr.length()==1)return arr.length();char [] chararr = arr.toCharArray();int left = 0;int right = 0;HashMap<Character,Integer> hashMap = new HashMap<>();int [] result = new int[chararr.length];int max = 1;for(int i = 0;i<chararr.length;i++){if(i == 0) {result[0] = 1;hashMap.put(chararr[0],1);continue;}int temp = result[i-1]+1;if(hashMap.containsKey(chararr[i])&&hashMap.get(chararr[i])!=0){while(hashMap.containsKey(chararr[i])&&hashMap.get(chararr[i])!=0){hashMap.put(chararr[left],hashMap.get(chararr[left])-1);temp--;left++;if(left==right)break;}result[i]= temp;}else if(!hashMap.containsKey(chararr[i])||(hashMap.containsKey(chararr[i])&&hashMap.get(chararr[i])==0)){temp = result[i-1]+1;result[i]= temp;}max = Math.max(max,result[i]);hashMap.put(chararr[i],1);}return max;}
}
优化版本
class Solution {// 优化版本public int lengthOfLongestSubstring(String s) {if(s == null || s.length() <= 0){return 0;}// 优化 => 单个变量Map<Character,Integer> map = new HashMap<>();//int[] dp = new int[s.length()];int a = 1;map.put(s.charAt(0), 0);int res = 1;for(int i = 1; i < s.length(); i++){if(!map.containsKey(s.charAt(i))){a = a + 1;// 就是没有刷新 a 之前,a表示dp[i-1]}else{int k = map.get(s.charAt(i));a = i - k <= a ? i - k : a + 1;}res = Math.max(res, a);map.put(s.charAt(i), i);}return res;// 时间On,空间On}
}
相关文章:
《剑指Offer》笔记题解思路技巧优化 Java版本——新版leetcode_Part_5
《剑指Offer》笔记&题解&思路&技巧&优化_Part_5 😍😍😍 相知🙌🙌🙌 相识😢😢😢 开始刷题🟢1. LCR 158. 库存管理 II——数组中出现次数超过一…...
ubuntu上安装docker
在 Ubuntu 上安装 Docker,可以按照以下步骤进行操作: 更新软件包列表:运行以下命令来更新系统的软件包列表: sudo apt update安装必要的依赖项:运行以下命令来安装 Docker 所需的依赖项: sudo apt install …...
【Docker】Linux主机部署Docker
Docker部署 1.二进制文件部署 到如下地址,下载二进制包。 Docker官网:https://docs.docker.com/engine/install/binaries/ 网易镜像源:https://mirrors.163.com/docker-ce/linux/static/stable/x86_64/ 下载好的二进制包上传到主机…...
vue前端docx库生成word表格 并合并单元格的例子
Vue.js 是一个流行的前端JavaScript框架,用于构建用户界面和单页应用程序。在Vue中生成Word表格并合并单元格,通常需要使用额外的库,如docx,它是一个用于创建和修改Word文档(.docx)的JavaScript库。 …...
FastGPT配置文件及OneAPI程序:
FastGPT配置文件及OneAPI程序:百度网盘 请输入提取码 提取码:wuhe 创建fastgpt目录:mkdir fastgpt 切换到fastgpt目录:cd fastgpt 下载docker-compose文件:curl -O https://raw.githubusercontent.com/labring/Fast…...
Positive Semidefinite Matrices 什么是半正定矩阵?(undone)
参考视频:https://www.bilibili.com/video/BV1Vg41197ew/?vd_source7a1a0bc74158c6993c7355c5490fc600 参考资料(半正定矩阵的定义):https://baike.baidu.com/item/%E5%8D%8A%E6%AD%A3%E5%AE%9A%E7%9F%A9%E9%98%B5/2152711?frge_ala 看看半正定矩阵的…...
shapely 笔记:STR TREE
数据结构笔记:R树-CSDN博客 1 基本介绍 使用Sort-Tile-Recursive (STR) 算法创建的仅查询的R-tree空间索引该树索引每个几何图形的边界框。树在初始化时直接构建,且一旦创建后不能添加或移除节点所有操作返回输入几何图形的索引边界框限于二维并且是轴…...
neo4j常用代码
1】查版本: CALL dbms.components() YIELD name, versions RETURN name, versions; 2】清数据: MATCH ()-[r]->() DELETE r; MATCH (n) DETACH DELETE n; 3】NEO4J 操作入门_neo4j查看历史执行命令-CSDN博客 :play --首页 :help match/keys/com…...
OpenAI划时代大模型——文本生成视频模型Sora作品欣赏(五)
Sora介绍 Sora是一个能以文本描述生成视频的人工智能模型,由美国人工智能研究机构OpenAI开发。 Sora这一名称源于日文“空”(そら sora),即天空之意,以示其无限的创造潜力。其背后的技术是在OpenAI的文本到图像生成模型DALL-E基础上开发而成的。模型的训练数据既包含公开…...
Less预处理器教程
学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes 觉得有帮助的同学,可以点心心支持一下哈 一、Less介绍 less官方文档 lesscss.org/ less中文文档 less.bootcss.com/ less是一种css预处理器,它扩展了css语言,…...
PCL 计算点云AABB包围盒的体积
目录 一、AABB包围盒二、代码实现三、结果展示四、相关链接本文由CSDN点云侠原创,原文链接。爬虫自重,把自己当个人。 一、AABB包围盒 AABB包围盒又称了 轴对齐包围盒,是点云包围盒里最简单的一种,其计算方法也极其简单。获取包围盒之后,根据包围盒的长宽高进行体积计算即…...
论软件测试工程师 重要性!
在生活中,我们常常会遇到以下几种窘迫时刻: 准备骑共享单车出行,却发现扫码开锁半天,车子都没有反应;手机导航打车,却发现地图定位偏差很大,司机总是跑错地方;买个水,却…...
防御第六次作业-防火墙综合实验(av、url过滤、dns过滤)
目录 拓扑图: 要求: 8 9 10 11 拓扑图 要求 前7个要求在上一篇博客; 8.分公司内部的客户端可以通过域名访问到内部的服务器 9.假设内网用户需要通过外网的web服务器和pop3邮件服务器下载文件和邮件,内网的FTP服务器也需要…...
打码半年,开源一款自定义大屏设计软件!
hi,大家好,我是Tduck马马。 最近我们开源了一款大屏软件-TReport,与大家分享。 TReport是一款基于Vue3技术栈的数据可视化系统,支持静态、动态api等数据源;可用于数据可视化分析、报表分析、海报设计使用。 提供自定…...
云计算基础-大页内存
大页内存功能概述 什么是大页内存 简单来说,就是通过增大操作系统页的大小来减小页表,从而避免快表缺失 主要应用场景 主要运用于内存密集型业务的虚拟机,比如对于运行数据库系统的虚拟机,采用HugePages(大页)后,可…...
数据结构-邻接链表
介绍 邻接矩阵是运用较多的一种储存图的方法,但如果一张网图边数较少,就会出现二维矩阵中大部分数据为0的情况,浪费储存空间 为了避免空间浪费,也可以采用数组与链表结合的方式来存储图 假设有这样一张图 我们可以先用一个数组…...
十三、集合进阶——单列集合 及 数据结构
单列集合 及 数据结构 13.1 集合体系结构13.1.2 单列集合1. Collection2.Collection 的遍历方式迭代器遍历增强for遍历Lambda表达式遍历 3.List集合List集合的特有方法List集合的遍历方式五种遍历方式对比 4.数据结构1).栈2).队列3)数组4)链表小结5&…...
Android | ArcGIS入门
一、概述 ArcGIS是由Esri开发的地理信息系统(GIS)软件。它用于制图、空间分析和数据可视化。ArcGIS允许用户以各种格式创建、管理、分析和共享地理信息。它通常用于城市规划、环境管理和应急响应等领域。该软件包括一系列工具,用于创建地图、…...
dockerfile文件书写
1.dockerfile构建nginx镜像 1.1书写dockerfile文件 mkdir nginx #创建nginx目录 cd nginx vim dockerfile # 修改文件FROM centos # 基础镜像,默认最新的centos8操作系统 MAINTAINER xianchao # 指定镜像的作者信息 RUN rm -rf /etc/yum.repos.d/* # centos8默认…...
蓝桥杯-整数删除
给定一个长度为 N 的整数数列:A1, A2, ... , AN。你要重复以下操作 K 次: 每次选择数列中最小的整数(如果最小值不止一个,选择最靠前的),将其删除。 并把与它相邻的整数加上被删除的数值。 输出 K 次操作后…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
