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

基础贪心算法集合2(10题)

目录

1.单调递增的数字

2.坏了的计算器

 3.合并区间

4.无重叠区间

5. 用最少数量的箭引爆气球

 6.整数替换

解法1:模拟+记忆化搜索

解法2位运算+贪心

7.俄罗斯套娃信封问题

补充.堆箱子

8.可被3整除的最大和

 9.距离相等的条形码

 10.重构字符串


1.单调递增的数字

 738. 单调递增的数字 - 力扣(LeetCode)

但是如果只这么处理会出现bug 

例如如下这种情况,我们需要找到最前面的5.

因此

class Solution {
public:int monotoneIncreasingDigits(int n) {string num = to_string(n);int sz = num.size();int i = 0;while(i+1 < sz && num[i] <= num[i+1])i++;if(i+1 == sz)return n;//如果全递增直接返回,或者处理nums[i]的时候判断一下while(i - 1 >= 0 && num[i-1] == num[i])i--;num[i]--;for(int k = i + 1; k < sz; k++){num[k] = '9';}return stoi(num);//std::stoi 会忽略前导零,只返回字符串表示的整数值}
};

2.坏了的计算器

 991. 坏了的计算器 - 力扣(LeetCode)

看到这题我们首先就想到正向推导。

我们贪心地想到,如果想让初始数字以尽可能少的次数变成目标数字,可以多用*2操作。

但是我们发现这种贪心是不对的,对于*2和-1的操作,判断标准不是很明确。 用正向的方法比较难解决这个问题

        于是我们想到正难则反,而*2 和-1的操作正好有相反的/2和+1操作。 

        这一题有个非常重要的点就是它里面的数据是没有小数的,从起始数据到目标数据,不断*2,-1操作下是不能产生小数的。

          所以我们在面对奇数的时候,就不能进行/2操作了,只能进行+1操作。

整理思路,我们得出以下结论:

1.当end <= begin

当 end <= begin时,end要想达到begin,肯定不可能进行/2操作,只能进行+1操作,这时候无论奇数偶数,都只有+1的选择。我们需要进行begin-end次操作

 2.当end > begin 的时

当end > begin 的时候

 我们如果想要先+1再/2,那么我们必须要加偶数个1,我们才能/2.最后,我们通过k+1次操作得到了(x+k)/2.

而如果我们先/2,那么我们只需要1+k/2 次就能得到(x+k)/2。

我们很容易得到先进行除法是更优的。

因此在end > begin的时候 ,我们奇数仍然是只能+1,偶数则是只进行/2操作

class Solution {
public:int brokenCalc(int startValue, int target) {int ret = 0;while(target > startValue){if(target % 2 == 0){target /= 2;ret++;}else{target++;ret++;}}ret += startValue - target;return ret;}
};

 3.合并区间

56. 合并区间 - 力扣(LeetCode)

区间问题解法

我们为了思路统一,统一采用左端点排序

 假设我们有一个区间,从left 到right

那么我们下一个区间有以下这些情况。

整体分为有重叠部分和没有重叠部分。

当有重叠部分时,我们保存左端点,取较大的右端点。(因为进行排序后,左端点是升序排序的)

当没有重叠部分时,我们把{left,right}加入ret数组,然后更新left和right。

class Solution {
public:static bool cmp(vector<int> a, vector<int> b){return a[0] < b[0];}vector<vector<int>> merge(vector<vector<int>>& intervals) {//排序sort(intervals.begin(), intervals.end(), cmp);//合并区间vector<vector<int>> ret;int left = intervals[0][0];int right = intervals[0][1];for(int i = 1; i < intervals.size(); i++){if(intervals[i][0] <= right)//有重叠部分{right = max(right,intervals[i][1]);//合并}else//无重叠{ret.push_back({left, right});//加入到结果中left = intervals[i][0];right = intervals[i][1];}}ret.push_back({left, right});return ret;}
};

4.无重叠区间

 435. 无重叠区间 - 力扣(LeetCode)

 

仍然是先按照左端点排序。

我们要移除最少的区间,那也就是说要保留更多的区间。

因此我们可以采用以下策略来保留更多区间。

当存在区间重叠时,我们保留较小的右端点,这样它和后面的 区间有重叠的可能性就会变小。

当区间无重叠,我们更新left right并把count++即可。

遍历数组结束后要记得加上最后存在left right里面的那段区间。

最后,因为我们求的是移除的区间,因此把数组的长度减去count就是我们的返回值

class Solution {
public:int eraseOverlapIntervals(vector<vector<int>>& intervals) {int count = 0;sort(intervals.begin(), intervals.end());int left = intervals[0][0];int right = intervals[0][1];for(int i = 1; i < intervals.size(); i++){if(intervals[i][0] < right){right = min(right,intervals[i][1]);}else{count++;left = intervals[i][0];right = intervals[i][1];}}count ++;return intervals.size() - count;}
};

5. 用最少数量的箭引爆气球

452. 用最少数量的箭引爆气球 - 力扣(LeetCode)

理解题意,我们发现这也是一个区间问题。

我们发现这题找的实际上是交集。

  

class Solution {
public:int findMinArrowShots(vector<vector<int>>& points) {sort(points.begin(), points.end());int cover = 0;int right = points[0][1];for(int i = 1; i < points.size(); i++){if(points[i][0] <= right)//和上一个区间有交集{cover++;//重叠部分++right = min(right, points[i][1]);//右端点较小的同时也是是重叠区间的右端点}else{right = points[i][1];//无交集,以新的区间为基准再求重叠部分}}return points.size() - cover;}
};

 6.整数替换

解法1:模拟+记忆化搜索

就是暴力枚举每种情况,对于偶数直接除以2,对于奇数则是取 min(hash[n-1], hash[n+1])

需要注意的地方是,为了防止INT_MAX + 1 溢出,我们dfs函数的类型使用long long,哈希表也是一样。

class Solution {
public:unordered_map<long long, int> hash;int integerReplacement(int n) {return dfs(n);}int dfs(long long n){if(n == 1)return 0;if(n % 2 == 0){if(!hash.count(n/2)){hash[n/2] = dfs(n/2);}return 1 + hash[n/2];}else{if(!hash.count(n+1) ){hash[n+1] = dfs( n+1 );}if(!hash.count( n-1 ) ){hash[ n-1 ] = dfs( n-1 );}return 1  + min(hash[n-1], hash[n+1]);}}
};

解法2位运算+贪心

对于偶数我们进行/2操作即可。

对于奇数操作, 当其为01结尾的时候,我们采用-1操作操作数会更少。

                                当其为11结尾的时候,-1操作会使得一位1变为0,而+1操作可能会使得多于一位的1变为0,因此采用+1的操作会更快捷地得到最终值。

最后有一个例外,即3,我们应该采用-1操作。

要判断最后两位是01还是11,我们只需要把这些数对4取余即可,看余数是1还是3即可判断。

这道题的贪心就贪在不同的奇数是+1还是-1,已经在过程中证明好了

 同样需要加一个longlong

class Solution {
public:int integerReplacement(int num) {int ret = 0;long long n = num;while(n > 3){if(n % 2 == 0){ret++;n  = n >> 1;}else{if(n % 4 == 3){n = n + 1;ret++;}else if(n % 4 == 1){n = n - 1;ret++;}}}if(n == 3)return ret + 2;else if(n == 2)return ret + 1;else return ret;}
};

7.俄罗斯套娃信封问题

 解法1:区间排序+动态规划(超时)

解法2:区间排序 + 贪心 + 二分

我们严格按照左端点排序后,实际上已经不用看左端点了,因为总是递增的。 

那么这道题经过这样处理,就变成了一个最长递增子序列问题。

 

        但是当左端点有重复的时候需要注意,这时候如果我们的右端点按照升序排,我们就会把一些不该加的元素加入。

         这时候就需要我们在左端点相同的时候把右端点降序排序

 

        这样的好处是,我们就不会有可能把这些数字全部接到原数组后面了。因为如果有更小的数,那么我们会将其与原来的数替换。例如上一个数是3,按照升序排序的话,4679都会排到它后面。

        可是如果我们降序,则我们在将9加入数组后,后面的764都只是更新数组末尾的9而已,让9不断被替换为764.

class Solution {
public:static bool cmp(const vector<int> & a, const vector<int> & b){if(a[0] != b[0])return a[0] < b[0];else return a[1] > b[1];}int maxEnvelopes(vector<vector<int>>& env) {sort(env.begin(), env.end(), cmp);vector<int> ret;ret.push_back(env[0][1]);for(int i = 1; i < env.size(); i++){if(env[i][1] > ret.back()){ret.push_back(env[i][1]);}else{int left = 0; int right = ret.size() - 1;while(left < right){int mid = left + (right-left) / 2;if( env[i][1] <= ret[mid]){right = mid;}else{left = mid + 1;}}ret[left] = env[i][1];}}return ret.size();}
};

补充.堆箱子

 虽然俄罗斯套娃信封中的解法1会超时,但是在堆箱子这题中是可以通过的

面试题 08.13. 堆箱子 - 力扣(LeetCode)

 排序后的思路和最长递增子序列相同

有两个需要注意的问题

class Solution {
public:static bool cmp(vector<int> a, vector<int> b){return a[0] < b[0];}int pileBox(vector<vector<int>>& box) {sort(box.begin(), box.end(),cmp);//1.需要自己手动写一个排序函数,按照某一维度来排。 //默认排序会出问题int n = box.size();if(n == 0)return 0;vector<int> dp(n , 0);for(int i = 0; i < n; i++)//2.初始化dp表的时候,每个箱子最小的堆叠高度是自己的高度{dp[i] = box[i][2];}int ret = dp[0];for(int i = 1; i < n; i++){for(int j = i - 1; j >= 0; j--){if(box[j][0] < box[i][0] && box[j][1] < box[i][1] && box[j][2] < box[i][2]){dp[i] = max(dp[i], dp[j] + box[i][2]);}}ret = max(ret, dp[i]);}return ret;}
};

8.可被3整除的最大和

 1262. 可被三整除的最大和 - 力扣(LeetCode)

 

我们正难则反,根据累加和的不同情况,删去一些数即可,而我们只需要贪心地删除最小值即可。  

        分类情况中, 我们把第二种情况拿来举例子,可能我们有1个或者4个或者7个除以3余1的数,但是我们只需要取出最小的那个。整体来看是把这一组数分成两块,一块是一个除以3余1的数,另一块是可以被3整除的。

        下面的另外三种也是一样的分组方式。

        但是我们要注意,这些情况有可能不会全都有,因此我们可以先将x1 x2 y1 y2等赋值为

10010(题目中数组元素最大为10000),这样我们在最后取max的时候就必然不会取到无效情况。

 

更新最小值以及次小值只需要分类讨论即可 

 

class Solution {
public:int maxSumDivThree(vector<int>& nums) {int sum = 0;int n = nums.size();for(int i = 0; i < n; i++){sum += nums[i];}if(sum % 3 == 0){return sum;}else if(sum % 3 == 1){int x1,y1,y2;x1 = y1 = y2 = 1e4 + 10;for(int i = 0; i < n; i++){int tmp = nums[i];if(tmp % 3 == 1){x1 = min(x1, tmp);}else if(tmp % 3 == 2){if(tmp <= y1){y2 = y1;y1 = tmp;}else if(tmp > y1 && tmp <= y2){y2 = tmp;}}}return max(sum - x1, sum - y1 - y2);}else//取余等于2{int x1,x2,y1;x1 = x2 = y1 = 1e4 + 10;for(int i = 0; i < n; i++){int tmp = nums[i];if(tmp % 3 == 2){y1 = min(y1, tmp);}else if(tmp % 3 == 1){if(tmp <= x1){x2 = x1;x1 = tmp;}else if(tmp > x1 && tmp <= x2){x2 = tmp;}}}return max(sum - x1 - x2, sum - y1);}}
};

 

class Solution {
public:int maxSumDivThree(vector<int>& nums) {int sum = 0;int n = nums.size();for(int i = 0; i < n; i++){sum += nums[i];}if(sum % 3 == 0){return sum;}else if(sum % 3 == 1){int x1,y1,y2;x1 = y1 = y2 = 1e4 + 10;for(int i = 0; i < n; i++){int tmp = nums[i];if(tmp % 3 == 1){x1 = min(x1, tmp);}else if(tmp % 3 == 2){if(tmp <= y1){y2 = y1;y1 = tmp;}else if(tmp > y1 && tmp <= y2){y2 = tmp;}}}return max(sum - x1, sum - y1 - y2);}else//取余等于2{int x1,x2,y1;x1 = x2 = y1 = 1e4 + 10;for(int i = 0; i < n; i++){int tmp = nums[i];if(tmp % 3 == 2){y1 = min(y1, tmp);}else if(tmp % 3 == 1){if(tmp <= x1){x2 = x1;x1 = tmp;}else if(tmp > x1 && tmp <= x2){x2 = tmp;}}}return max(sum - x1 - x2, sum - y1);}}
};

 9.距离相等的条形码

 1054. 距离相等的条形码 - 力扣(LeetCode)

 

如果出现最多的数超过(n+1)/2,那么必定有两个相同元素会相邻 

 

我们只需要把最大的那个元素先排好,然后去排其它的即可,我们的i如果越界,那么将其置为1即可 

class Solution {
public:vector<int> rearrangeBarcodes(vector<int>& barcodes) {int maxval = -1; int maxcount = 0;unordered_map<int, int> hash;for(auto ch : barcodes ){if( maxcount < ++hash[ch] ){maxval = ch;maxcount = hash[ch];}}int n = barcodes.size();int i;vector<int> ret(n);for(i = 0; i < n && maxcount > 0; i += 2){ret[i] = maxval;maxcount --;}hash.erase(maxval);for(auto& [x, y] : hash){for(int j = 0; j < y; j++){if(i >= n)i = 1;ret[i] = x;i += 2;}}return ret;}
};

 10.重构字符串

767. 重构字符串 - 力扣(LeetCode) 

        这道题和上一道题是一模一样的的,唯一的不同就是这道题可能无解,因此我们需要判断一些maxcount 会不会大于(s.size() + 1)/2. 

class Solution {
public:string reorganizeString(string s) {int n = s.size();char maxval;int maxcount = 0;string ret = s;unordered_map<char, int> hash;for(auto ch: s){if(maxcount < ++hash[ch]){maxval = ch;maxcount = hash[ch];}}if(maxcount > (n + 1) / 2)return "";int i;for(i = 0; i < n && maxcount > 0; i += 2){ret[i] = maxval;maxcount--;}hash.erase(maxval);for(auto &[x, y] : hash){for(int j = 0; j < y; j++){if(i >= n)i = 1;ret[i] = x;i += 2;}}return ret;}
};

 

相关文章:

基础贪心算法集合2(10题)

目录 1.单调递增的数字 2.坏了的计算器 3.合并区间 4.无重叠区间 5. 用最少数量的箭引爆气球 6.整数替换 解法1&#xff1a;模拟记忆化搜索 解法2位运算贪心 7.俄罗斯套娃信封问题 补充.堆箱子 8.可被3整除的最大和 9.距离相等的条形码 10.重构字符串 1.单调递增的数字…...

Oracle OCP知识点详解3:使用 vim 编辑文件

一、Vim 核心模式解析 1.1 模式切换图谱 graph LR A[普通模式] -->|i/I/a/A| B[插入模式] B -->|Esc| A A -->|v/V/Ctrlv| C[可视模式] A -->|: / ?| D[命令模式] C -->|Esc| A D -->|Enter| A 1.2 Oracle 场景高频模式组合 模式组合应用场景操作效率提…...

项目风险的早期识别与应对清单

项目风险的早期识别与应对策略的核心在于&#xff1a; 建立系统化的风险识别流程、评估风险的影响程度、制定详细的应对措施、持续监控与调整风险管理计划。 其中&#xff0c;建立系统化的风险识别流程是风险管理的第一步&#xff0c;也是最为关键的一环。通过构建一套有效的识…...

springboot数据动态脱敏

反射Jackson数据动态脱敏 我有两个字段&#xff0c;name和type&#xff0c;我想要在type为1对数据脱敏&#xff0c;而其他情况不脱敏&#xff1a; CustomSerializer注解 Target(ElementType.FIELD) //表示这个注解只能用在字段上 Retention(RetentionPolicy.RUNTIME) //注解…...

算法:定义一个数组的的陡峭值为:相邻两个元素之差的绝对值之和。

定义一个数组的的陡峭值为:相邻两个元素之差的绝对值之和。现在小红拿到了一个数组&#xff0c;她有多次询问&#xff0c;每次查询一段连续子数组的陡峭值。你能帮帮她吗? 连续子数组为从原数组中&#xff0c;连续的选择一段元素(可以全选、可以不选)得到的新数组。 输入描述 …...

【AI提示词】网络安全专家

提示说明 网络安全专家在数字时代扮演着至关重要的角色&#xff0c;他们通过专业的知识和技能保护网络系统免受攻击和破坏&#xff0c;确保数据的安全和隐私。 提示词 # 角色 网络安全专家## 性格类型指标 INTP&#xff08;内向直觉思维感知型&#xff09;## 背景 网络安全专…...

AI大模型原理可视化工具:深入浅出理解大语言模型的工作原理

AI大模型原理可视化工具&#xff1a;深入浅出理解大语言模型的工作原理 在人工智能快速发展的今天&#xff0c;大语言模型&#xff08;如GPT、BERT等&#xff09;已经成为改变世界的重要技术。但对于很多人来说&#xff0c;理解这些模型的工作原理仍然是一个挑战。为了帮助更多…...

解决无人机无人化自主巡检面对的新挑战-机载通信、控制及算力的AIBOX

解决无人机无人化自主巡检面对的新挑战-机载通信、控制及算力的AIBOX 之前的微文&#xff1a;基于无人机的无人化自主巡检-大疆机场3M4TD&#xff0c;介绍了机场3的无人机无人机巡检的特点以及局限性。此处从通信增强、飞行及位置服务增强、智慧飞行以及无人机编队几个方面阐述…...

供应商涨价,项目如何控制采购成本

优化供应商结构、严格控制交付流程、强化谈判策略、设置弹性预算、建立长远合作机制 来有效控制采购成本。其中&#xff0c;强化谈判策略 是最核心的一步&#xff1a;不仅要明确价格承受范围&#xff0c;还需根据对方供应链特点和市场行情&#xff0c;准备多套备选方案&#xf…...

newbee商城购物车模块mapper.xml

1.浏览代码 1&#xff09;表 自定义 DROP TABLE IF EXISTS tb_newbee_mall_shopping_cart_item; CREATE TABLE tb_newbee_mall_shopping_cart_item (cart_item_id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 购物项主键id,user_id bigint(20) NOT NULL COMMENT 用户主键id…...

高级java每日一道面试题-2025年4月07日-微服务篇[Nacos篇]-如何监控Nacos的运行状态?

如果有遗漏,评论区告诉我进行补充 面试官: 如何监控Nacos的运行状态&#xff1f; 我回答: 监控Nacos运行状态的综合方案 在Java高级面试中&#xff0c;监控Nacos运行状态是一个重要的技术点&#xff0c;它直接关系到微服务架构的稳定性和性能。以下是一个综合的监控方案&am…...

开源技术如何助力中小企业实现财务管理自主化?

中小企业的数字化困境与开源机遇 国际数据公司&#xff08;IDC&#xff09;研究显示&#xff0c;全球67%的中小企业因高昂的软件成本和僵化的功能设计&#xff0c;未能有效推进数字化转型。传统商业软件常面临三大矛盾&#xff1a; 功能冗余与核心需求缺失&#xff1a;标准化系…...

3D-DIC技术:煤层开采瓦斯防治的精准监测解决方案

3D-DIC非接触式三维全场应变测量系统是基于数字图像相关算法&#xff08;DIC&#xff09;的一种光学测定应变、变形的方法。由CCD相机、光源、支架、数据采集器和DIC软件组成。 一、DIC技术瓦斯防治应用 新拓三维XTDIC三维全场应变测量系统&#xff0c;通过两个工业相机采集图…...

CS5346 - Annotation in Visualization (可视化中的注释)

文章目录 Annotation 的重要性Levels of Annotation &#xff08;注释的层级&#xff09;Headings and IntroductionHeadings&#xff08;标题&#xff09;陈述型&#xff08;Statement&#xff09;&#xff1a;突出结论或有趣发现疑问型&#xff08;Question&#xff09;&…...

VRoid-Blender-Unity个人工作流笔记

流程 VRoid 选配模型>减面、减材质>导出vrm Blender&#xff08;先有CATS、vrm插件&#xff09; 导入vrm>Fix model>修骨骼>导出fbx Unity 找回贴图、改着色器、调着色器参数…… VRoid 减面 以模型不出现明显棱角为准。脸好像减面100也问题不大。 下…...

【ROS2】行为树 BehaviorTree(三):异步操作

【ROS】郭老二博文之:ROS目录 1、简述 前面的例子中,使用过同步节点 SyncActionNode,当调用到该节点时,成功返回SUCCESS,失败返回FAILURE,并且线程会等待该节点执行完毕。 如果需要异步操作,比如节点执行需要很长时间,不能立刻返回结果,可以先去执行其它任务,等该…...

Uniapp:本地存储

目录 一、概述二、分类三、同步存储&#xff1a;setStorageSync3.1 方法3.2 案例3.2.1 存储3.2.2 获取3.2.3 获取storage3.2.4 删除3.2.5 清空 四、异步存储&#xff1a;setStorage4.1 方法4.2 案例4.2.1 存储数据4.2.2 获取数据4.2.3 获取storage详情4.2.4 删除4.2.5 清空 一、…...

3D版的VLA——从3D VLA、SpatialVLA到PointVLA(不动VLM,仅动作专家中加入3D数据)

前言 之前写这篇文章的时候&#xff0c;就想解读下3D VLA来着&#xff0c;但一直因为和团队并行开发具身项目&#xff0c;很多解读被各种延后 更是各种出差&#xff0c;比如从25年3月下旬至今&#xff0c;连续出差三轮&#xff0c;绕中国半圈&#xff0c;具身占八成 第一轮 …...

Linux/Unix 命令pstree

pstree 是一个用于以树状结构显示系统中进程关系的 Linux/Unix 命令。它可以直观地展示进程的父子关系&#xff0c;帮助用户理解进程之间的层次结构。 基本用法 pstree [选项] [PID或用户名]如果不带参数&#xff0c;pstree 会显示所有进程的树状结构。可以指定 PID 来查看某个…...

探索Linux/Unix 系统中进程与文件的深层关系

在 Linux 和 Unix 系统中&#xff0c;“一切皆文件” 的设计哲学贯穿始终。这种理念不仅简化了系统的操作接口&#xff0c;也赋予了用户和开发者极大的灵活性。文件、目录、设备、网络套接字&#xff0c;甚至进程本身&#xff0c;都可以通过文件系统的形式进行访问和操作。其中…...

AI:线性代数之矩阵

从0到1吃透线性代数矩阵:码农必修的数学武器库 ⚔️🔥 🧩 矩阵基础概念(程序员视角) 在人工智能时代,矩阵早已突破数学课本的边界,成为程序员手中的瑞士军刀🔪。TensorFlow底层用矩阵实现张量计算⚡,OpenCV依赖矩阵完成图像卷积🌌,Spark MLlib通过矩阵分解进行…...

object类

equals() 方法 equals() 方法的原始定义是比较两个对象的内存地址是否相同&#xff0c;但在实际使用中&#xff0c;很多类都会重写这个方法&#xff0c;使其用于比较对象的内容是否相同。例如 String 类就重写了 equals() 方法&#xff0c;用于比较字符串的内容。 String str…...

MySQL表的使用(4)

首先回顾一下之前所学的增删查改&#xff0c;这些覆盖了平时使用的80% 我们上节课中学习到了MySQL的约束 其中Primary key 是主键约束&#xff0c;我们今天要学习的是外键约束 插入一个表 外键约束 父表 子表 这条记录中classid为5时候&#xff0c;不能插入&#xff1b; 删除…...

国产海光 DCU 资源监控脚本 + Promethues+grafana 深度解析

在当今数字化时代,对于服务器资源的高效监控与管理愈发重要。特别是在使用国产海光 DCU 的场景下,如何精准掌握其资源使用情况,成为了众多技术人员关注的焦点。本文将详细介绍一款国产海光 DCU 资源监控脚本,以及它与 Prometheus 和 Grafana 的结合使用,助力大家实现对 DC…...

视觉slam框架从理论到实践-第一节绪论

从opencv的基础实现学习完毕后&#xff0c;接下来依照视觉slam框架从理论到实践&#xff08;第二版&#xff09;的路线进行学习&#xff0c;主要以学习笔记的形式进行要点记录。 目录 1.数据里程计 2.后端优化 3.回环检测 4.建图 在视觉SLAM 中整体作业流程可分为&#xff1…...

基于若依的ruoyi-vue-plus的nbmade-boot在线表单的设计(二)后端方面的设计

希望大家一起能参与我的新开源项目nbmade-boot: 宁波智能制造低代码实训平台 主要目标是类似设计jeecgboot那样的online表单功能,因为online本身没有开源这部分代码,而我设计这个是完全开源的,所以希望大家支持支持,开源不容易。 今天主要是讲后端部门。 1、FormControl.ja…...

mapbox V3 新特性,加载风粒子动画

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️raster-particle 栅格粒子样式图层 api…...

开发一个答题pk小程序的大致成本是多少

答题 PK 小程序通常指的是一种允许用户之间进行实时或异步答题竞赛的应用程序&#xff0c;可能结合PK答题、积分系统、排行榜等功能。 一、首先&#xff0c;确定答题 PK 小程序的基本功能模块。这可能包括用户注册登录、题库管理、题目类型&#xff08;单选、多选、判断等&am…...

深入探索如何压缩 WebAssembly

一、初始体积&#xff1a;默认 Release 构建 我们从最基础的构建开始&#xff0c;不开启调试符号&#xff0c;仅使用默认的 release 模式&#xff1a; $ wc -c pkg/wasm_game_of_life_bg.wasm 29410 pkg/wasm_game_of_life_bg.wasm这是我们优化的起点 —— 29,410 字节。 二…...

系统性能优化总结与思考-第一部分

1.C代码优化策略总结 编译器方面&#xff1a;用好的编译器并用好编译器&#xff08;支持C11的编译器&#xff0c;IntelC&#xff08;速度最快&#xff09;GNU的C编译器GCC/G&#xff08;非常符合标准&#xff09;&#xff0c;Visual C&#xff08;性能折中&#xff09;&#x…...

Qt6文档阅读笔记-Simple Http Server解析

此篇博文是利用Qt6如何创建一个简单的HTTP服务。 此例展示了如何使用QHttpServer类建立服务端。服务端通过QTcpServer的bind()函数监听tcp端口&#xff0c;并且使用route()函数增加不同URL的处理。 QSslConfiguration conf QSslConfiguration::defaultConfiguration();const a…...

深度解析Redis过期字段清理机制:从源码到集群化实践 (二)

本文紧跟 上一篇 深度解析Redis过期字段清理机制&#xff1a;从源码到集群化实践 &#xff08;一&#xff09; 可以从redis合集中查看 八、Redis内核机制深度解析 8.1 Lua脚本执行引擎原理 Lua脚本执行流程图技术方案 ​​执行全流程解析&#xff1a;​ #mermaid-svg-X51Gno…...

【密码学——基础理论与应用】李子臣编著 第六章 祖冲之序列密码 课后习题

免责声明 这里都是自己搓或者手写的。 里面不少题目感觉有问题或者我的理解有偏颇&#xff0c;请大佬批评指正&#xff01; 不带思考抄作业的请自动退出&#xff0c;我的并非全对&#xff0c;仅仅提供思维&#xff01; 题目 逐题解析 6.1 直接看表得 0x18 0xAD 0xF8 0x25 …...

LFM调制信号分类与检测识别

LFM调制信号分类与检测识别 LFM调制信号分类识别AlexNet网络识别InceptionV3、ResNet-18、ResNet-50网络识别 LFM调制信号检测识别 LFM调制信号分类识别 支持识别LFM信号、间歇采样干扰(ISRJ)、灵巧噪声干扰(SNJ)、扫频干扰(SJ)、瞄准干扰(AJ)、阻塞干扰(BJ)、密集假目标干扰(…...

mac中的zip文件压缩与压缩文件中指定目录删除

问题 在使用mac的图形界面压缩文件后&#xff0c;往往那个压缩文件中带有__MACOSX文件&#xff0c;但是&#xff0c;这个文件夹又是我们不需要的目录&#xff0c;所有&#xff0c;需要对mac图形化界面压缩后的文件目录进行删除&#xff0c;改如何做&#xff1f; 检查压缩文件…...

docker 多主机容器组网

一、服务器A 1、初始化Swarm集群&#xff08;管理节点&#xff09; docker swarm init --advertise-addr 主节点ip 2、获取工作节点​​加入Swarm集群所需的Token 和完整命令 docker swarm join-token worker 3、创建Overlay网络 docker network create -d overlay --subnet…...

MAC Mini M4 上测试Detectron2 图像识别库

断断续续地做图像识别的应用&#xff0c;使用过各种图像识别算法&#xff0c;一开始使用openCV 做教室学生计数的程序。以后又使用YOLO 做医学伤口检测程序。最近&#xff0c;开始使用meta 公司的Detectron2.打算做OCR 文档结构分析 Detectron2 的开发者是 Meta 的 Facebook AI…...

AETTA: Label-Free Accuracy Estimation for Test-Time Adaptation

1. Motivation: 利用TTA(test time adaptation)来将在训练数据上的原始预训练的模型适应到新的未标注的测试据,传统的很多方法都做了一些不现实的假设,比如需要借助标注的数据/重新训练模型,为了解决这个问题,本论文提出了AETTA的方法,不需要任何的标注,借助TTA来实现…...

如何在本地使用Ollama运行 Hugging Face 模型

你是否曾经在 Hugging Face 上发现了一个超棒的模型&#xff0c;然后幻想着能在自己的笔记本电脑上离线运行它&#xff0c;还能通过一个清爽的 API 让你的应用轻松访问&#xff1f; 别担心&#xff0c;你不是一个人&#xff01;我们很多人都曾在 Hugging Face 上发现过令人惊叹…...

AI幻觉的生成原理与应对指南:六大中文模型横向解析

先简单说一下AI幻觉的生成原理&#xff0c;核心源于模型的概率预测本质。大语言模型通过分析海量文本数据的统计规律生成内容&#xff0c;其本质是选择「概率最高」而非「事实正确」的词汇组合。训练数据中的知识盲区&#xff08;如时效性信息缺失、专业领域覆盖不足&#xff0…...

Oracle WITH 子句(也称为 公共表表达式,Common Table Expression,CTE)

在 Oracle 中&#xff0c;WITH 子句&#xff08;也称为 公共表表达式&#xff0c;Common Table Expression&#xff0c;CTE&#xff09;用于定义一个临时的命名子查询&#xff0c;可以在后续的 SQL 语句中多次引用。它提高了复杂查询的可读性和可维护性&#xff0c;尤其适合需要…...

BSD、Solaris、Unix 的文件系统: UFS/UFS2、ZFS 及其他存储技术

文件系统构成了任何操作系统不可或缺的一部分。大多数操作系统倾向于使用自己的原生文件系统格式&#xff0c;这些格式在其他环境中可能受到限制或不可用。Unix 系列操作系统及其变体&#xff0c;如 BSD 和 Solaris&#xff0c;传统上依赖于 UFS&#xff0c;后来升级到 UFS2。随…...

杭电oj(1000,1001,1089-1096,2000-2007)题解

目录 ​编辑 1000 题目 思路 代码 1001 题目 思路 代码 1089 题目 思路 代码 1090 题目 思路 代码 1091 题目 思路 代码 1092 题目 思路 代码 1093 题目 思路 代码 1094 题目 思路 代码 1095 题目 思路 代码 1096 题目 思路 代码 20…...

css 练习01

效果展示 源码 <template><div class"container"><div class"search"></div><div class"content"><div class"left"><div class"info"><div class"layout-list" v…...

[reinforcement learning] 是什么 | 应用场景 | Andrew Barto and Richard Sutton

目录 什么是强化学习&#xff1f; 强化学习的应用场景 广告和推荐 对话系统 强化学习的主流算法 纽约时报&#xff1a;Turing Award Goes to 2 Pioneers of Artificial Intelligence wiki 资料混合&#xff1a;youtube, wiki, github 今天下午上课刷到了不少&#xff0…...

【VsCode】设置文件自动保存

目录 一、前言 二、操作步骤 一、前言 VSCode中开启自动保存功能可以通过访问设置、修改settings.json文件、使用自动保存延迟功能来实现。这些方法能有效提升编程效率、避免数据丢失、实时同步更改。 二、操作步骤 在 Visual Studio Code (VS Code) 中设置自动保存功能非…...

16:00开始面试,16:08就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到4月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…...

深入理解 PyTorch:从入门到精通的深度学习框架

&#x1f4cc; 友情提示&#xff1a; 本文内容由银河易创AI&#xff08;https://ai.eaigx.com&#xff09;创作平台的gpt-4-turbo模型生成&#xff0c;旨在提供技术参考与灵感启发。文中观点或代码示例需结合实际情况验证&#xff0c;建议读者通过官方文档或实践进一步确认其准…...

子串-滑动窗口的最大值

滑动窗口的最大值 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗 口从数组的最左侧移动到数组的最右侧。你只可以看 到在滑动窗口内的 k 个数字。滑动窗口每次只向右移 动一位。 返回 滑动窗口中的最大值 。输入&#xff1a;整型数组&#xff0c;最大值k 输出&am…...

老龄化遇上数字化丨适老化改造:操作做“减法”,服务做“加法”

当中国 60 岁以上人口突破 2.8 亿&#xff0c;银发浪潮与数字时代的碰撞催生了一道必答题&#xff1a;如何让技术红利真正惠及老年人&#xff1f;传统适老化改造常陷入 "技术崇拜" 误区。 智能设备功能复杂如 "科技迷宫"&#xff0c;操作界面充满 "数…...