力扣hot100-->滑动窗口、贪心

news2025/1/27 20:05:09

你好呀,欢迎来到 Dong雨 的技术小栈 🌱

在这里,我们一同探索代码的奥秘,感受技术的魅力 ✨。

👉 我的小世界:Dong雨

📌 分享我的学习旅程
🛠️ 提供贴心的实用工具
💡 记录每一个灵感火花

🌟✨ Hello,探索技术的你,这里是本篇的地图指南! ✨🌟

目录

🌟✨ Hello,探索技术的你,这里是本篇的地图指南! ✨🌟

滑动窗口

1. 3. 无重复字符的最长子串

2. 76. 最小覆盖子串

3. 239. 滑动窗口最大值

4. 438. 找到字符串中所有字母异位词

 贪心

1. 55. 跳跃游戏

数学

1. 48. 旋转图像

其他

1. 253. 会议室 II

2.621. 任务调度器

🎉🌈 陪伴至此,感谢有你 🌈🎉


滑动窗口

1. 3. 无重复字符的最长子串

算术评级: 5

提示

给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。

示例 1:

输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

示例 2:

输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例 3:

输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
    请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
// 双指针
class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        unordered_map<char, int> need; // 使用哈希表记录字符的出现次数

        int n = s.size(); // 获取字符串的长度
        if (0 == n) return 0; // 如果字符串为空,直接返回0

        int left{}, right{1}, result{1}; // 初始化左右指针和结果变量
        need[s[left]]++; // 将第一个字符加入哈希表,表示已经访问过

        // 遍历字符串,移动右指针
        for (; right < n; ++right) {
            if (need[s[right]] > 0) { // 如果当前字符已经出现过(即在哈希表中计数大于0)
                // 移动左指针,直到当前字符不再重复
                while (need[s[right]] > 0) {
                    need[s[left++]]--; // 将左指针指向的字符从哈希表中移除
                }
            }
            need[s[right]]++; // 将当前字符加入哈希表
            result = max(result, right - left + 1); // 更新最长不重复子串的长度
        }

        return result; // 返回最终结果
    }
};

2. 76. 最小覆盖子串

算术评级: 6

提示

给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。

注意:

  • 对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。
  • 如果 s 中存在这样的子串,我们保证它是唯一的答案。

示例 1:

输入:s = "ADOBECODEBANC", t = "ABC"
输出:"BANC"
解释:最小覆盖子串 "BANC" 包含来自字符串 t 的 'A'、'B' 和 'C'。

示例 2:

输入:s = "a", t = "a"
输出:"a"
解释:整个字符串 s 是最小覆盖子串。

示例 3:

输入: s = "a", t = "aa"
输出: ""
解释: t 中两个字符 'a' 均应包含在 s 的子串中,
因此没有符合条件的子字符串,返回空字符串。

提示:

  • m == s.length
  • n == t.length
  • 1 <= m, n <= 105
  • s 和 t 由英文字母组成
// 滑动窗口+哈希表
class Solution {
public:
    string minWindow(string s, string t) {
        vector<int> need(128); // 使用大小为128的数组作为哈希表,记录字符的需要量

        // 初始化need数组,记录字符串t中每个字符的出现次数
        for (char c : t) need[c]++;

        int left{}, right{}; // 初始化左右指针
        int start{}; // 用于记录最小子串的起始位置
        int count = t.size(); // 记录还需要匹配的字符数量
        int size = INT_MAX; // 用于记录最小子串的长度,初始值为最大整数

        // 开始滑动窗口过程
        for (; right < s.size(); ++right) {
            char c = s[right]; // 当前右指针指向的字符
            if (need[c] > 0) count--; // 如果当前字符是需要的字符,则count减1
            need[c]--; // 将当前字符加入窗口,更新需要量

            // 当所有字符都匹配成功后(count == 0),尝试缩小窗口
            if (count == 0) {
                // 缩小左边界,直到窗口中不再包含多余的字符
                while (left < right && need[s[left]] < 0) {
                    need[s[left++]]++; // 将左边界字符移出窗口
                }

                // 更新最小子串的长度和起始位置
                if (right - left + 1 < size) {
                    size = right - left + 1; // 更新最小子串长度
                    start = left; // 更新最小子串的起始位置
                }

                // 左边界右移,准备寻找下一个可能的子串
                need[s[left++]]++; // 将左边界字符移出窗口
                count++; // 由于移出了一个字符,count加1
            }
        }

        // 如果size仍为初始值INT_MAX,说明没有找到符合条件的子串,返回空字符串
        // 否则返回最小子串
        return size == INT_MAX ? "" : s.substr(start, size);
    }
};

3. 239. 滑动窗口最大值

算术评级: 6

提示

给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。

返回 滑动窗口中的最大值 

示例 1:

输入:nums = [1,3,-1,-3,5,3,6,7], k = 3
输出:[3,3,5,5,6,7]
解释:
滑动窗口的位置                最大值
---------------               -----
[1  3  -1] -3  5  3  6  7       3
 1 [3  -1  -3] 5  3  6  7       3
 1  3 [-1  -3  5] 3  6  7       5
 1  3  -1 [-3  5  3] 6  7       5
 1  3  -1  -3 [5  3  6] 7       6
 1  3  -1  -3  5 [3  6  7]      7

示例 2:

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

// 滑动窗口
class Solution {
public:
    vector<int> maxSlidingWindow(vector<int>& nums, int k) {
        int n = nums.size(); // 获取数组的长度
        priority_queue<pair<int, int>> pq; // 使用优先队列(最大堆)存储窗口中的元素及其索引

        // 初始化第一个窗口(前k个元素)
        for (int i = 0; i < k; ++i) {
            pq.push(pair(nums[i], i)); // 将元素及其索引加入优先队列
        }

        vector<int> result; // 用于存储每个窗口的最大值
        result.push_back(pq.top().first); // 第一个窗口的最大值

        // 遍历数组,从第k个元素开始,模拟滑动窗口
        for (int i = k; i < n; ++i) {
            pq.push(pair(nums[i], i)); // 将当前元素加入优先队列

            // 移除窗口外的元素
            while (pq.top().second <= i - k) {
                pq.pop(); // 如果堆顶元素的索引不在当前窗口范围内,则移除
            }

            result.push_back(pq.top().first); // 当前窗口的最大值
        }

        return result; // 返回结果
    }
};

4. 438. 找到字符串中所有字母异位词

算术评级: 4

给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。

示例 1:

输入: s = "cbaebabacd", p = "abc"
输出: [0,6]
解释:
起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。
起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。

 示例 2:

输入: s = "abab", p = "ab"
输出: [0,1,2]
解释:
起始索引等于 0 的子串是 "ab", 它是 "ab" 的异位词。
起始索引等于 1 的子串是 "ba", 它是 "ab" 的异位词。
起始索引等于 2 的子串是 "ab", 它是 "ab" 的异位词。
// 滑动窗口
class Solution {
public:
    vector<int> findAnagrams(string s, string p) {
        int slen = s.size(); // 获取字符串 s 的长度
        int plen = p.size(); // 获取字符串 p 的长度

        // 如果 s 的长度小于 p 的长度,直接返回空结果
        if (slen < plen) return {};

        vector<int> sArr(26, 0); // 用于记录窗口内字符的频率(s 的子串)
        vector<int> pArr(26, 0); // 用于记录字符串 p 中字符的频率
        vector<int> ans; // 用于存储结果(异位词的起始索引)

        // 初始化 pArr,记录字符串 p 中每个字符的频率
        for (char c : p) {
            pArr[c - 'a']++; // 将字符 c 转换为索引(0-25),并增加频率
        }

        // 初始化 sArr,记录 s 中前 plen 个字符的频率
        for (int i = 0; i < plen; ++i) {
            sArr[s[i] - 'a']++; // 将字符 s[i] 转换为索引,并增加频率
        }

        // 检查初始窗口是否与 pArr 相等
        if (sArr == pArr) ans.emplace_back(0); // 如果相等,记录起始索引 0

        // 滑动窗口,从第 plen 个字符开始,到 s 的末尾
        for (int i = 0; i < slen - plen; ++i) {
            // 更新窗口:
            // 移除窗口左侧的字符(s[i]),并减少其频率
            sArr[s[i] - 'a']--;
            // 添加窗口右侧的字符(s[i + plen]),并增加其频率
            sArr[s[i + plen] - 'a']++;

            // 检查当前窗口是否与 pArr 相等
            if (sArr == pArr) ans.emplace_back(i + 1); // 如果相等,记录当前窗口的起始索引
        }

        return ans; // 返回所有异位词的起始索引
    }
};

 贪心

1. 55. 跳跃游戏

算术评级: 5

给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。

示例 1:

输入:nums = [2,3,1,1,4]
输出:true
解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。

示例 2:

输入:nums = [3,2,1,0,4]
输出:false
解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。
// 贪心
class Solution {
public:
    bool canJump(vector<int>& nums) {
        int n = nums.size(); // 获取数组的长度

        int maxJump = 0; // 用于记录当前能到达的最远位置
        for (int i = 0; i < n; ++i) {
            maxJump = max(maxJump, i + nums[i]); // 更新最远能到达的位置

            // 如果最远位置已经能到达或超过数组末尾,直接返回 true
            if (maxJump >= n - 1) return true;

            // 如果当前位置 i 无法到达下一个位置(即 maxJump < i + 1),返回 false
            if (maxJump < i + 1) {
                return false;
            }
        }

        return true; // 如果循环正常结束,说明可以到达末尾
    }
};

数学

1. 48. 旋转图像

算术评级: 5

给定一个 × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。

你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。

示例 1:

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

示例 2:

输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]
输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]

class Solution {
public: 
    // 重点是找到规律:对于矩阵中第 i 行的第 j 个元素,在旋转后,它出现在倒数第 i 列的第 j 个位置。
    // 即 matrix[r][c] 在旋转后,新的位置是 matrix[c][n-r-1]

    // 方法一:借助辅助数组
    // void rotate(vector<vector<int>>& matrix) {
    //     auto mNew = matrix; // 创建一个辅助矩阵
    //     int n = matrix.size();
    //     for (int i = 0; i < n; ++i) {
    //         for (int j = 0; j < n; ++j) {
    //             mNew[j][n - i - 1] = matrix[i][j]; // 根据规律更新位置
    //         }
    //     }
    //     matrix = mNew; // 将辅助矩阵赋值回原矩阵
    // }

    // 方法二:利用翻转代替旋转
    // 水平翻转:matrix[r][c] = matrix[n-row-1][c]
    // 主对角线翻转: matrix[r][c] = matrix[c][r]
    void rotate(vector<vector<int>>& matrix) {
        int n = matrix.size(); // 获取矩阵的大小

        // 第一步:水平翻转(上下翻转)
        for (int i = 0; i < n / 2; ++i) { // 只需翻转上半部分
            for (int j = 0; j < n; ++j) { // 遍历每一列
                swap(matrix[i][j], matrix[n - i - 1][j]); // 交换第 i 行和第 n-i-1 行的元素
            }
        }

        // 第二步:主对角线翻转(沿对角线翻转)
        for (int i = 0; i < n; ++i) { // 遍历每一行
            for (int j = 0; j < i; ++j) { // 只需翻转对角线左侧的元素
                swap(matrix[i][j], matrix[j][i]); // 交换 matrix[i][j] 和 matrix[j][i]
            }
        }
    }
};

其他

1. 253. 会议室 II

给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2],…] (si < ei),为避免会议冲突,同时要考虑充分利用会议室资源,请你计算至少需要多少间会议室,才能满足这些会议安排。

示例 1:

输入: [[0, 30],[5, 10],[15, 20]]
输出: 2
示例 2:

输入: [[7,10],[2,4]]
输出: 1

// 优先队列(最小堆)
class Solution {
public:
    int minMeetingRooms(vector<vector<int>>& intervals) {
        sort(intervals.begin(), intervals.end()); // 按会议开始时间排序

        // 使用最小堆(优先队列)来跟踪会议室的结束时间
        priority_queue<int, vector<int>, greater<int>> pq;

        for (auto &meet : intervals) {
            // 如果堆不为空且堆顶的结束时间小于等于当前会议的开始时间
            if (!pq.empty() && pq.top() <= meet[0]) {
                pq.pop(); // 释放会议室
            }
            pq.push(meet[1]); // 分配会议室给当前会议
        }

        return pq.size(); // 堆的大小即为需要的会议室数量
    }
};

2.621. 任务调度器

算术评级: 6

给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表,用字母 A 到 Z 表示,以及一个冷却时间 n。每个周期或时间间隔允许完成一项任务。任务可以按任何顺序完成,但有一个限制:两个 相同种类 的任务之间必须有长度为 n 的冷却时间。

返回完成所有任务所需要的 最短时间间隔 。

示例 1:

输入:tasks = ["A","A","A","B","B","B"], n = 2

输出:8

解释:

在完成任务 A 之后,你必须等待两个间隔。对任务 B 来说也是一样。在第 3 个间隔,A 和 B 都不能完成,所以你需要待命。在第 4 个间隔,由于已经经过了 2 个间隔,你可以再次执行 A 任务。

示例 2:

输入:tasks = ["A","C","A","B","D","B"], n = 1

输出:6

解释:一种可能的序列是:A -> B -> C -> D -> A -> B。

由于冷却间隔为 1,你可以在完成另一个任务后重复执行这个任务。

示例 3:

输入:tasks = ["A","A","A","B","B","B"], n = 3

输出:10

解释:一种可能的序列为:A -> B -> idle -> idle -> A -> B -> idle -> idle -> A -> B。

只有两种任务类型,A 和 B,需要被 3 个间隔分割。这导致重复执行这些任务的间隔当中有两次待命状态。

class Solution {
public:
    // 总排队时间 = (桶个数 - 1) * (n + 1) + 最后一桶的任务数
    int leastInterval(vector<char>& tasks, int n) {
        // 总的任务数
        int len = tasks.size();
        vector<int> vec(26, 0); // 用于记录每个任务的出现次数(任务为大写字母,共26个)

        // 统计每个任务的出现次数
        for (char c : tasks) ++vec[c - 'A'];

        // 按出现次数降序排序
        sort(vec.rbegin(), vec.rend());

        // 计算最后一桶的任务数
        int cnt = 1; // 初始化为1,表示至少有一个任务(出现次数最多的任务)
        while (cnt < vec.size() && vec[cnt] == vec[0]) {
            cnt++; // 如果有多个任务的出现次数等于最大值,它们都会在最后一桶中
        }

        // 计算总时间
        // vec[0] - 1:桶的数量(出现次数最多的任务)
        // n + 1:每个桶的总时间(一个任务 + n个冷却时间)
        // cnt:最后一桶的任务数
        return max(len, cnt + (n + 1) * (vec[0] - 1));
    }
};

🎉🌈 陪伴至此,感谢有你 🌈🎉

感谢你能坚持看到这里!如果这篇文章对你有一点点帮助,希望能收获你的:
👍 一个赞,⭐ 一个收藏,💬 一条评论 或 🔗 一键分享!
你的支持是我持续输出的最大动力!✨

有问题?有灵感?
别犹豫,直接留言和我交流~让我们一起成长、一起突破 💡。

最后,祝你:

🍯 生活美满如蜜香
🌞 心情灿烂似朝阳
🌱 成长如树渐成章
🚀 未来闪耀梦飞翔!

再次感谢你的阅读!🌟 下次再见~ 🎉

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

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

相关文章

PBFT算法

在我的博客中对于RAFT算法也有详细的介绍&#xff0c;raft算法包含三种角色&#xff0c;分别是&#xff1a;跟随者&#xff08; follower &#xff09;&#xff0c;候选人&#xff08;candidate &#xff09;和领导者&#xff08; leader &#xff09;。集群中的一个节点在某一…

跨境电商代购系统独立站深度分享

在全球化日益加深的今天&#xff0c;跨境电商代购系统独立站作为一种新兴的电子商务模式&#xff0c;正逐渐成为连接全球消费者与优质商品的重要桥梁。本文将详细介绍跨境电商代购系统独立站的基本功能以及技术实现的重难点&#xff0c;以期为相关从业者提供一些有价值的参考和…

携程旅行 登录分析

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 逆向分析 所有加密流程基本一样就说…

西藏酥油茶:高原上的醇香温暖

西藏酥油茶:高原上的醇香温暖 在西藏高原,有一种饮品,它不仅滋养了一代又一代的藏民,还承载着丰富的文化与历史,它就是西藏酥油茶。酥油茶,藏语称为“恰苏玛”,意为搅动的茶,是藏族人民日常生活中不可或缺的一部分,更是待客、祭祀等活动中的重要礼仪物品。 历史与文化渊源 酥…

刷题总结 回溯算法

为了方便复习并且在把算法忘掉的时候能尽量快速的捡起来 刷完回溯算法这里需要做个总结 回溯算法的适用范围 回溯算法是深度优先搜索&#xff08;DFS&#xff09;的一种特定应用&#xff0c;在DFS的基础上引入了约束检查和回退机制。 相比于普通的DFS&#xff0c;回溯法的优…

Antd React Form使用Radio嵌套多个Select和Input的处理

使用Antd React Form使用Radio会遇到嵌套多个Select和Input的处理&#xff0c;需要多层嵌套和处理默认事件和冒泡&#xff0c;具体实现过程直接上代码。 实现效果布局如下图 代码 <Formname"basic"form{form}labelWrap{...formItemLayoutSpan(5, 19)}onFinish{on…

Linux(Centos、Ubuntu) 系统安装jenkins服务

该文章手把手演示在Linux系统下如何安装jenkins服务、并自定义jenkins数据文件位置、以及jenkins如何设置国内镜像源加速&#xff0c;解决插件下载失败问题 安装方式&#xff1a;war包安装 阿里云提供的war下载源地址&#xff1a;https://mirrors.aliyun.com/jenkins/war/?s…

【基于无线电的数据通信链】Link 11 仿真测试

〇、废话 Link 11 仿真测试 涉及多个方面&#xff0c;包括信号仿真、协议模拟、数据链路层的仿真以及网络性能评估等。Link 11 是一种基于 HF&#xff08;高频&#xff09; 或 UHF&#xff08;超高频&#xff09; 波段的无线通信协议&#xff0c;主要用于军事通信系统中。为了…

VScode 开发 Springboot 程序

1. 通过maven创建springboot程序 输入 mvn archetype:generate 选择模板&#xff0c;一般默认选择为第 7 种方式&#xff1b; 选择之后&#xff0c;一般要你填写如下内容&#xff1a; groupId: 组织名称&#xff1b;artifactId: 项目名称&#xff1b;version: 版本&#xff0…

深入MapReduce——引入

引入 前面我们已经深入了HDFS的设计与实现&#xff0c;对于分布式系统也有了不错的理解。 但HDFS仅仅解决了海量数据存储和读写的问题。要想让数据产生价值&#xff0c;一定是需要从数据中挖掘出价值才行&#xff0c;这就需要我们拥有海量数据的计算处理能力。 下面我们还是…

springfox-swagger-ui 3.0.0 配置

在3.0中&#xff0c;访问地址URL变了。 http://地址:端口/项目名/swagger-ui/ SpringBoot maven项目引入 <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>3.0.0</version> </…

如何解压7z文件?8种方法(Win/Mac/手机/网页端)

7z 文件是一种高效的压缩文件格式&#xff0c;由 7 - Zip 软件开发者所采用。它运用独特的压缩算法&#xff0c;能显著缩小文件体积&#xff0c;便于存储与传输各类数据&#xff0c;像软件安装包、大型资料集等。但要使用其中内容&#xff0c;就必须解压&#xff0c;因为处于压…

Spring Boot 邂逅Netty:构建高性能网络应用的奇妙之旅

一、引言 在当今数字化时代&#xff0c;构建高效、可靠的网络应用是开发者面临的重要挑战。Spring Boot 作为一款强大的 Java 开发框架&#xff0c;以其快速开发、简洁配置和丰富的生态支持&#xff0c;深受广大开发者喜爱。而 Netty 作为高性能、异步的网络通信框架&#xff…

[STM32 - 野火] - - - 固件库学习笔记 - - -十一.电源管理系统

一、电源管理系统简介 电源管理系统是STM32硬件设计和系统运行的基础&#xff0c;它不仅为芯片本身提供稳定的电源&#xff0c;还通过多种电源管理功能优化功耗、延长电池寿命&#xff0c;并确保系统的可靠性和稳定性。 二、电源监控器 作用&#xff1a;保证STM32芯片工作在…

从 Web2 到 Web3:技术演进中的关键变革

随着互联网的快速发展&#xff0c;Web 技术经历了从 Web1 到 Web2&#xff0c;再到当前热议的 Web3 的演变。每一次技术迭代不仅仅是技术本身的升级&#xff0c;更代表着对社会、经济和文化的深刻影响。本文将带你走过 Web2 到 Web3 的技术演进&#xff0c;探讨其中的关键变革&…

Android实战经验篇-玩转Selinux(详解版)

列文章转如下链接&#xff1a; Android Display Graphics系列文章-汇总 Android实战经验篇-系列文章汇总 本文主要包括部分&#xff1a; 一、Selinux概述 1.1 SELinux是什么&#xff1f; 1.2 自主访问控制&#xff08;DAC&#xff09; 1.3 强制访问控制&#xff08;MAC&…

CLOUDFLARE代理请求重定向你太多次

现象 使用CLOUDFLARE代理前请求正常&#xff0c;使用CLOUDFLARE代理请求后出现 原因分析 以下是我的猜测&#xff0c;在默认情况下 CLOUDFLARE代理&#xff0c;可能是直接请求我们服务器的IP&#xff0c;比如&#xff1a;http://1.1.1.1 而不是通过域名的方式&#xff08;如…

U-Net - U型网络:用于图像分割的卷积神经网络

U-Net是一种专为图像分割任务设计的卷积神经网络&#xff08;CNN&#xff09;&#xff0c;最初由Olaf Ronneberger等人于2015年提出。它被广泛应用于医学影像分析、遥感图像分割、自动驾驶和其他许多需要对图像进行像素级分类的任务中。U-Net具有强大的特征提取和恢复能力&…

第十五届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组

第十五届的题目在规定时间内做出了前5道&#xff0c;还有2道找时间再磨一磨。现在把做的一些思路总结如下&#xff1a; 题1&#xff1a;握手问题 问题描述 小蓝组织了一场算法交流会议&#xff0c;总共有 50人参加了本次会议。在会议上&#xff0c;大家进行了握手交流。按照惯例…

Vue3 + TS 实现批量拖拽 文件夹和文件 组件封装

一、html 代码&#xff1a; 代码中的表格引入了 vxe-table 插件 <Tag /> 是自己封装的说明组件 表格列表这块我使用了插槽来增加扩展性&#xff0c;可根据自己需求&#xff0c;在组件外部做调整 <template><div class"dragUpload"><el-dial…