前缀和技巧解析

前缀和技巧解析

前缀和(Prefix Sum)是一种常用的算法技巧,用于高效地处理一系列连续子数组和的问题。通过构建一个额外的数组来存储从数组起始位置到当前位置的累计和,可以在常数时间内快速计算任意区间的和。

前缀和应用的典型问题

  1. 区间和查询: 前缀和最常见的应用是快速求解数组中某个区间的和。这对于处理大量的区间和查询非常高效。
  2. 求子数组的和: 使用前缀和可以快速求解子数组的和。
  3. 二维矩阵求和: 前缀和技巧也可以扩展到二维矩阵,方便处理多次查询矩阵子区域的和。

303. 区域和检索 - 数组不可变

给定一个整数数组 nums,处理以下类型的多个查询:

  1. 计算索引 leftright (包含 leftright)之间的 nums 元素的 ,其中 left <= right

实现 NumArray 类:

  • NumArray(int[] nums) 使用数组 nums 初始化对象
  • int sumRange(int i, int j) 返回数组 nums 中索引 leftright 之间的元素的 总和 ,包含 leftright 两点(也就是 nums[left] + nums[left + 1] + ... + nums[right] )

示例 1:

输入:
["NumArray", "sumRange", "sumRange", "sumRange"]
[[[-2, 0, 3, -5, 2, -1]], [0, 2], [2, 5], [0, 5]]
输出:
[null, 1, -1, -3]解释:
NumArray numArray = new NumArray([-2, 0, 3, -5, 2, -1]);
numArray.sumRange(0, 2); // return 1 ((-2) + 0 + 3)
numArray.sumRange(2, 5); // return -1 (3 + (-5) + 2 + (-1)) 
numArray.sumRange(0, 5); // return -3 ((-2) + 0 + 3 + (-5) + 2 + (-1))
class NumArray {
public:NumArray(vector<int>& nums) {numsum.resize(nums.size()+1);numsum[0]=0;for(int i=0; i<nums.size(); i++){numsum[i+1]=numsum[i]+nums[i];}}int sumRange(int left, int right) {return (numsum[right+1]-numsum[left]);}
private:vector<int> numsum;
};

304. 二维区域和检索 - 矩阵不可变

给定一个二维矩阵 matrix,以下类型的多个请求:

  • 计算其子矩形范围内元素的总和,该子矩阵的 左上角(row1, col1)右下角(row2, col2)

实现 NumMatrix 类:

  • NumMatrix(int[][] matrix) 给定整数矩阵 matrix 进行初始化
  • int sumRegion(int row1, int col1, int row2, int col2) 返回 左上角 (row1, col1)右下角 (row2, col2) 所描述的子矩阵的元素 总和

示例 1:

img

输入: 
["NumMatrix","sumRegion","sumRegion","sumRegion"]
[[[[3,0,1,4,2],[5,6,3,2,1],[1,2,0,1,5],[4,1,0,1,7],[1,0,3,0,5]]],[2,1,4,3],[1,1,2,2],[1,2,2,4]]
输出: 
[null, 8, 11, 12]解释:
NumMatrix numMatrix = new NumMatrix([[3,0,1,4,2],[5,6,3,2,1],[1,2,0,1,5],[4,1,0,1,7],[1,0,3,0,5]]);
numMatrix.sumRegion(2, 1, 4, 3); // return 8 (红色矩形框的元素总和)
numMatrix.sumRegion(1, 1, 2, 2); // return 11 (绿色矩形框的元素总和)
numMatrix.sumRegion(1, 2, 2, 4); // return 12 (蓝色矩形框的元素总和)

思路:构建前缀和矩阵(m+1)*(n+1),因为这个矩阵的第一行和第一列全是0,目的是方便计算

sumnum[i][j]=matrix[i-1][j-1]+sumnum[i-1][j]+sumnum[i][j-1]-sumnum[i-1][j-1];

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

class NumMatrix {
public:NumMatrix(vector<vector<int>>& matrix) {int m = matrix.size();int n = matrix[0].size();sumnum.resize(m+1 , vector<int>(n+1,0));for(int i=1; i<=m; i++){for(int j=1; j<=n; j++){sumnum[i][j]=matrix[i-1][j-1]+sumnum[i-1][j]+sumnum[i][j-1]-sumnum[i-1][j-1];}}}int sumRegion(int row1, int col1, int row2, int col2) {return sumnum[row2+1][col2+1]-sumnum[row2+1][col1]-sumnum[row1][col2+1]+sumnum[row1][col1];}
private:vector<vector<int>> sumnum;
};

1314. 矩阵区域和

给你一个 m x n 的矩阵 mat 和一个整数 k ,请你返回一个矩阵 answer ,其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和:

  • i - k <= r <= i + k,
  • j - k <= c <= j + k
  • (r, c) 在矩阵内。

示例 1:

输入:mat = [[1,2,3],[4,5,6],[7,8,9]], k = 1
输出:[[12,21,16],[27,45,33],[24,39,28]]

示例 2:

输入:mat = [[1,2,3],[4,5,6],[7,8,9]], k = 2
输出:[[45,45,45],[45,45,45],[45,45,45]]

思路:这道题可以直接套用304. 二维区域和检索 - 矩阵不可变 时实现的 NumMatrix 类,主要注意下通过 min, max 函数优雅避免索引越界的技巧。

class Solution {
public:vector<vector<int>> numsum;void numMatrix(vector<vector<int>>& mat){int m = mat.size();int n = mat[0].size();numsum.resize(m+1, vector<int>(n+1,0));for(int i=1; i<=m; i++){for(int j=1; j<=n; j++){numsum[i][j]=mat[i-1][j-1]+numsum[i-1][j]+numsum[i][j-1]-numsum[i-1][j-1];}}}int sumNumlr(int r1, int c1, int r2, int c2){return numsum[r2+1][c2+1]-numsum[r1][c2+1]-numsum[r2+1][c1]+numsum[r1][c1];}vector<vector<int>> matrixBlockSum(vector<vector<int>>& mat, int k) {numMatrix(mat);int m = mat.size();int n = mat[0].size();vector<vector<int>> answer(m,vector<int>(n,0));for(int i=0; i<m; i++){for(int j=0; j<n; j++){int minr=max(i-k,0);int minc=max(j-k,0);int maxr=min(i+k,m-1);int maxc=min(j+k,n-1);answer[i][j]=sumNumlr(minr, minc, maxr, maxc);}}return answer;}
};

724. 寻找数组的中心下标

给你一个整数数组 nums ,请计算数组的 中心下标

数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。

如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。

如果数组有多个中心下标,应该返回 最靠近左边 的那一个。如果数组不存在中心下标,返回 -1

示例 1:

输入:nums = [1, 7, 3, 6, 5, 6]
输出:3
解释:
中心下标是 3 。
左侧数之和 sum = nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11 ,
右侧数之和 sum = nums[4] + nums[5] = 5 + 6 = 11 ,二者相等。

示例 2:

输入:nums = [1, 2, 3]
输出:-1
解释:
数组中不存在满足此条件的中心下标。

示例 3:

输入:nums = [2, 1, -1]
输出:0
解释:
中心下标是 0 。
左侧数之和 sum = 0 ,(下标 0 左侧不存在元素),
右侧数之和 sum = nums[1] + nums[2] = 1 + -1 = 0 。
class Solution {
public:int pivotIndex(vector<int>& nums) {int n = nums.size();vector<int> numsum(n+1, 0);for(int i=1; i<=n; i++){numsum[i] = numsum[i-1] + nums[i-1]; }for(int i=1; i<=n; i++){int leftsum = numsum[i-1];int rightsum = numsum[n]-numsum[i];if(leftsum==rightsum){return i-1;}}return -1;}
};

238. 除自身以外数组的乘积

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。

题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。

请 **不要使用除法,**且在 O(n) 时间复杂度内完成此题。

示例 1:

输入: nums = [1,2,3,4]
输出: [24,12,8,6]

示例 2:

输入: nums = [-1,1,0,-3,3]
输出: [0,0,9,0,0]

思路:整2个数组,一个是前缀积,一个是后缀积,所求answer元素就是对应前缀积和后缀积的乘积之和

class Solution {
public:vector<int> productExceptSelf(vector<int>& nums) {int n = nums.size();vector<int> qian(n);vector<int> hou(n);vector<int> result(n);qian[0]=nums[0];hou[n-1]=nums[n-1];for(int i=1; i<n; i++){qian[i]=qian[i-1]*nums[i];}for(int i=n-2; i>=0; i--){hou[i]=hou[i+1]*nums[i];}result[0]=hou[1];result[n-1]=qian[n-2];for(int i=1; i<n-1; i++){result[i]=qian[i-1]*hou[i+1];}return result;}
};

1352. 最后 K 个数的乘积

请你实现一个「数字乘积类」ProductOfNumbers,要求支持下述两种方法:

1. add(int num)

  • 将数字 num 添加到当前数字列表的最后面。

2. getProduct(int k)

  • 返回当前数字列表中,最后 k 个数字的乘积。
  • 你可以假设当前列表中始终 至少 包含 k 个数字。

题目数据保证:任何时候,任一连续数字序列的乘积都在 32-bit 整数范围内,不会溢出。

示例:

输入:
["ProductOfNumbers","add","add","add","add","add","getProduct","getProduct","getProduct","add","getProduct"]
[[],[3],[0],[2],[5],[4],[2],[3],[4],[8],[2]]输出:
[null,null,null,null,null,null,20,40,0,null,32]解释:
ProductOfNumbers productOfNumbers = new ProductOfNumbers();
productOfNumbers.add(3);        // [3]
productOfNumbers.add(0);        // [3,0]
productOfNumbers.add(2);        // [3,0,2]
productOfNumbers.add(5);        // [3,0,2,5]
productOfNumbers.add(4);        // [3,0,2,5,4]
productOfNumbers.getProduct(2); // 返回 20 。最后 2 个数字的乘积是 5 * 4 = 20
productOfNumbers.getProduct(3); // 返回 40 。最后 3 个数字的乘积是 2 * 5 * 4 = 40
productOfNumbers.getProduct(4); // 返回  0 。最后 4 个数字的乘积是 0 * 2 * 5 * 4 = 0
productOfNumbers.add(8);        // [3,0,2,5,4,8]
productOfNumbers.getProduct(2); // 返回 32 。最后 2 个数字的乘积是 4 * 8 = 32 
class ProductOfNumbers {
public:vector<int> numlist;ProductOfNumbers() {numlist.push_back(1);}void add(int num) {if(num==0){numlist.clear();numlist.push_back(1);return;}int n = numlist.size();numlist.push_back(numlist[n-1]*num);}int getProduct(int k) {int n = numlist.size();if(k>n-1){return 0;}return numlist[n-1]/numlist[n-1-k];}
};

525. 连续数组

给定一个二进制数组 nums , 找到含有相同数量的 01 的最长连续子数组,并返回该子数组的长度。

示例 1:

输入: nums = [0,1]
输出: 2
说明: [0, 1] 是具有相同数量 0 和 1 的最长连续子数组。

示例 2:

输入: nums = [0,1,0]
输出: 2
说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。

**思路:**我们可以通过 前缀和 来转换问题,并利用 哈希表 来记录前缀和的索引。具体步骤如下:

  1. 前缀和的定义:遍历数组时,我们可以将 0 和 1 转换为两个不同的值,例如,将 0 视为 -1,将 1 视为 +1。这样问题就转化为:找出和为 0 的最长子数组。因为相同数量的 0 和 1 等价于和为 0 的子数组。
  2. 前缀和的累加:遍历数组时,计算当前元素的前缀和。如果当前前缀和出现过,那么当前子数组与第一次出现该前缀和的索引之间的子数组就含有相同数量的 0 和 1,长度可以计算出来。
  3. 哈希表的作用:哈希表用于记录每个前缀和第一次出现的位置。哈希表的键是前缀和的值,值是该前缀和第一次出现的位置索引。
class Solution {
public:int findMaxLength(vector<int>& nums) {unordered_map<int,int> map;int presum=0;int maxlength=0;map[0]=-1;//i-(-1)=i+1for(int i=0; i<nums.size(); i++){presum += (nums[i]==1)?1:-1;if(map.find(presum)!=map.end()){maxlength=max(maxlength, i-map[presum]);}else{map[presum]=i;}}return maxlength;}
};

523. 连续的子数组和

给你一个整数数组 nums 和一个整数 k ,如果 nums 有一个 好的子数组 返回 true ,否则返回 false

一个 好的子数组 是:

  • 长度 至少为 2 ,且
  • 子数组元素总和为 k 的倍数。

注意

  • 子数组 是数组中 连续 的部分。
  • 如果存在一个整数 n ,令整数 x 符合 x = n * k ,则称 xk 的一个倍数。0 始终 视为 k 的一个倍数。

示例 1:

输入:nums = [23,2,4,6,7], k = 6
输出:true
解释:[2,4] 是一个大小为 2 的子数组,并且和为 6 。

示例 2:

输入:nums = [23,2,6,4,7], k = 6
输出:true
解释:[23, 2, 6, 4, 7] 是大小为 5 的子数组,并且和为 42 。 
42 是 6 的倍数,因为 42 = 7 * 6 且 7 是一个整数。

示例 3:

输入:nums = [23,2,6,4,7], k = 13
输出:false
class Solution {
public:bool checkSubarraySum(vector<int>& nums, int k) {//(sumNums[i]-sumNums[j])%k=0 && i-j>=2unordered_map<int,int> map;int presum=0;map[0]=-1;for(int i=0;i<nums.size();i++){presum+=nums[i];int mod=presum%k;if(map.find(mod)!=map.end()){if(i-map[mod]>1){return true;}}else{map[mod]=i;}}return false;}
};

代码解释:

前缀和:我们通过变量 presum 记录到当前位置为止的元素和。

模运算:每次计算 presum % k 来查找之前是否存在相同的模值。如果存在,说明当前的子数组和是 k 的倍数。

哈希表 map:记录每个 presum % k 的首次出现位置。特别地,map[0] = -1 是为了处理从数组开始的子数组(如果前缀和直接就是 k 的倍数)。

返回条件:当我们找到一个符合条件的子数组时,立即返回 true,否则继续遍历。

560. 和为 K 的子数组

给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数

子数组是数组中元素的连续非空序列。

示例 1:

输入:nums = [1,1,1], k = 2
输出:2

示例 2:

输入:nums = [1,2,3], k = 3
输出:2
class Solution {
public:int subarraySum(vector<int>& nums, int k) {//sumNum[i]-sumNum[j]=k && count++unordered_map<int,int> map;int sumNum=0;int count=0;map[0]=1;for(int i=0; i<nums.size(); i++){sumNum+=nums[i];int cha = sumNum-k;if(map.find(cha)!=map.end()){count+=map[cha];}map[sumNum]++;}return count;}
};

974. 和可被 K 整除的子数组

给定一个整数数组 nums 和一个整数 k ,返回其中元素之和可被 k 整除的非空 子数组 的数目。

子数组 是数组中 连续 的部分。

示例 1:

输入:nums = [4,5,0,-2,-3,1], k = 5
输出:7
解释:
有 7 个子数组满足其元素之和可被 k = 5 整除:
[4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3]

示例 2:

输入: nums = [5], k = 9
输出: 0
//有几种 i、j 组合,满足 (sumNum[j]−sumNum[i−1]) mod K==0。
//有几种 i、j 组合,满足 sumNum[j] mod K == sumNum[i−1] mod K。
//前提:sumNum[j] 、sumNum[i−1] 为正整数。负数的情况要处理
class Solution {
public:int subarraysDivByK(vector<int>& nums, int k) {// (sumNum[i]-sumNum[j])%k=0unordered_map<int,int> map;int sumNum = 0;int count = 0;map[0]=1;for(int i=0; i<nums.size(); i++){sumNum+=nums[i];int mod = sumNum%k;if (mod < 0) mod += k;//前缀和取余数不能为负数if(map.find(mod)!=map.end()){count+=map[mod];}map[mod]++;}return count;}
};

1124. 表现良好的最长时间段

给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数。

我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。

所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格 大于「不劳累的天数」。

请你返回「表现良好时间段」的最大长度。

示例 1:

输入:hours = [9,9,6,0,6,6,9]
输出:3
解释:最长的表现良好时间段是 [9,9,6]。

示例 2:

输入:hours = [6,6,6]
输出:0
class Solution {
public:int longestWPI(vector<int>& hours) {//等价于nums[i]-nums[j]>0 && max(length)unordered_map<int, int> map;map[0]=-1;int sumNum=0;int length=0;for(int i=0; i<hours.size(); i++){sumNum += (hours[i]>8)?1:-1;if(sumNum>0){length = max(length,i+1);}else{if(map.count(sumNum-1)){length = max(length,i-map[sumNum-1]);} }//避免覆盖第一次出现的位置,因为i-map[sumNum-1]是需要返回最长的也就是最早出现的作为起点if(!map.count(sumNum)){map[sumNum]=i;}}return length;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/15881.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

(undone) MIT6.S081 2023 学习笔记 (Day4: LAB3 page tables)

LAB 网页&#xff1a;https://pdos.csail.mit.edu/6.S081/2023/labs/pgtbl.html 任务1&#xff1a;Speed up system calls 根据网页&#xff0c;操作系统可以通过把部分数据放入用户空间的页表&#xff0c;来使得部分系统调用不用进入内核空间&#xff0c;从而提高速度。我们的…

CSS:怎么把网站都变成灰色

当大家看到全站的内容都变成了灰色&#xff0c;包括按钮、图片等等。这时候我们可能会好奇这是怎么做到的呢&#xff1f; 有人会以为所有的内容都统一换了一个 CSS 样式&#xff0c;图片也全换成灰色的了&#xff0c;按钮等样式也统一换成了灰色样式。但你想想这个成本也太高了…

探索Python文档自动化的奥秘:`python-docx`库全解析

文章目录 探索Python文档自动化的奥秘&#xff1a;python-docx库全解析1. 背景&#xff1a;为何选择python-docx&#xff1f;2. python-docx是什么&#xff1f;3. 如何安装python-docx&#xff1f;4. 简单库函数使用方法创建文档添加段落添加标题添加表格插入图片 5. 应用场景自…

OCP证书如何下载?

访问Oracle CertView网站&#xff1a; 打开网址 https://certview.oracle.com/ &#xff0c;这是Oracle官方提供的证书查询平台 。 登录账号&#xff1a; 使用您的Oracle账号和密码登录CertView。如果您不记得密码&#xff0c;可以通过注册账号时预留的邮箱重置密码 。 查看成…

OBOO鸥柏“触摸屏广告一体机交互”亮相2024中国珠海航展

2024年11月12日&#xff0c;第十五届中国国际航空航天博览会&#xff08;简称中国航展或珠海航展&#xff09;在珠海拉开帷幕。展会现场&#xff0c;既有OBOO鸥柏一大批高精尖液晶显示产品集体亮相&#xff0c;也有航天相关科技领域及飞行表演队炫技蓝天等。在中国航展的各个科…

【智能分子动力学】深度学习驱动分子动力学方法概述

深度学习驱动分子动力学&#xff08;Deep Learning-driven Molecular Dynamics&#xff0c;简称DLDMD&#xff09;方法是将深度学习技术应用于分子动力学模拟中的一种创新方法。这种方法通过深度学习模型来提升传统分子动力学模拟的效率和精度&#xff0c;尤其是在复杂系统的建…

(69)基于Hilbert(希尔伯特)变换的调相信号解调的MATLAB仿真

文章目录 前言一、希尔伯特变换二、相位调制1.基本原理2.调制特点3.应用 三、使用希尔伯特变换进行相位解调的原理1. 解调原理2.算法优点 四、MATLAB仿真1. 仿真代码2. 仿真结果 总结 前言 本文首先介绍了相位调制技术&#xff0c;然后说明了使用希尔伯特变换进行调相信号解调…

ISUP协议视频平台EasyCVR视频设备轨迹回放平台智慧农业视频远程监控管理方案

在当今快速发展的农业领域&#xff0c;智慧农业已成为推动农业现代化、助力乡村全面振兴的新手段和新动能。随着信息技术的持续进步和城市化进程的加快&#xff0c;智慧农业对于监控安全和智能管理的需求日益增长。 视频设备轨迹回放平台EasyCVR作为智慧农业视频远程监控管理方…

Python——NumPy库的简单用法,超级详细教程使用

一、什么是NumPy库 NumPy&#xff1a;它是python的一个科学计算库函数&#xff0c;它是由c语言编写的 它应用于数据处理、机器学习、图像处理、文件操作等等 二、array函数 这里导入库numpy&#xff0c;命名为np&#xff0c;后面的np都是代表着是numpy函数 array函数表示创建…

【postman】怎么通过curl看请求报什么错

获取现成的curl方式&#xff1a; 1&#xff0c;拿别人给的curl 2&#xff0c;手机app界面通过charles抓包&#xff0c;点击接口复制curl 3&#xff0c;浏览器界面-开发者工具-选中接口复制curl 拿到curl之后打开postman&#xff0c;点击import&#xff0c;粘贴curl点击send&am…

高翔【自动驾驶与机器人中的SLAM技术】学习笔记(十三)图优化SLAM的本质

一、直白解释slam与图优化的结合 我从b站上学习理解的这个概念。 视频的大概位置是1个小时以后&#xff0c;在第75min到80min之间。图优化SLAM是怎么一回事。 slam本身是有运动方程的&#xff0c;也就是运动状态递推方程&#xff0c;也就是预测过程。通过t1时刻&#xff0c…

哔哩喵 2.3.11 | 非常好用的第三方B站客户端

哔哩喵是一款非常好用的第三方B站客户端&#xff0c;它允许用户查看各个分区在每个时间段的热门视频列表&#xff0c;支持关键字和UP主屏蔽功能&#xff0c;并能通过添加代理服务器来观看受地区限制的番剧。最新版本2.3.11更新了多项功能&#xff0c;包括个人中心头像及动态大图…

算法定制LiteAIServer摄像机实时接入分析平台玩手机打电话检测算法:智能监控的新篇章

在现代社会&#xff0c;随着智能手机的普及&#xff0c;无论是在工作场所还是公共场所&#xff0c;玩手机或打电话的行为日益普遍。然而&#xff0c;在某些特定环境下&#xff0c;如工厂生产线、仓库、学校课堂等&#xff0c;这些行为可能会影响到工作效率、安全或教学秩序。为…

11个c语言编程练习题

0. 钞票和硬币 money.c 读取一个带有两个小数位的浮点数&#xff0c;代表货币价值。将该值分解为多种钞票和硬币的和&#xff0c;要求使用的钞票和硬币的总数量尽可能少。 货币面值有100&#xff0c;50&#xff0c;20&#xff0c;10&#xff0c;5&#xff0c;1&#xff0c;0.…

【go从零单排】Signals、Exit

&#x1f308;Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 &#x1f4d7;概念 在 Go 语言中&#xff0c;信号&#xff08;signals&#xff09;是操作系统用来通…

PyAEDT:Ansys Electronics Desktop API 简介

在本文中&#xff0c;我将向您介绍 PyAEDT&#xff0c;这是一个 Python 库&#xff0c;旨在增强您对 Ansys Electronics Desktop 或 AEDT 的体验。PyAEDT 通过直接与 AEDT API 交互来简化脚本编写&#xff0c;从而允许在 Ansys 的电磁、热和机械求解器套件之间无缝集成。通过利…

教你制作更方便快捷的电子产品目录!

​在现代工作环境中&#xff0c;电子产品目录进入目录内容的分类的制作。按照电子产品的是至关类型进行重要的分类&#xff0c;环节如&#xff1a;一个清晰、详尽手机、便于、电脑查找的电子产品目录&#xff0c;平板不仅能提高工作效率&#xff0c;还能给客户留下良好的印象。…

硬件工程师之电子元器件—二极管(5)之肖特基二极管

写在前面 本系列文章主要讲解二极管的相关知识&#xff0c;希望能帮助更多的同学认识和了解二极管。 若有相关问题&#xff0c;欢迎评论沟通&#xff0c;共同进步。(*^▽^*) 二极管 9. 肖特基二极管(SBD) 肖特基势垒二极管&#xff08;SBD&#xff09;作为一种二极管&#…

实习冲刺第二十一天

14.最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 ""。 示例 1&#xff1a; 输入&#xff1a;strs ["flower","flow","flight"] 输出&#xff1a;"fl"示例…

游戏引擎学习第11天

视频参考:https://www.bilibili.com/video/BV1QLmDYQE3n 平台层的编写 应该是平台可移植什么的吧 逐项补充说明&#xff1a; 存档位置 在游戏或应用程序中&#xff0c;需要保存用户的进度、设置和数据&#xff0c;存档位置是指存放这些数据的文件夹路径。通常&#xff0c;平台…