【力扣系列题目】不同路径 组合总和 最大连续1个数 打家劫舍{持续更新中...}
文章目录
- 不同路径
- 不同路径
- [不同路径 II](https://leetcode.cn/problems/unique-paths-ii/)
- [不同路径 III](https://leetcode.cn/problems/unique-paths-iii/)
- 组合总和
- 组合总和 【无重复数字+无限制选择次数】
- [组合总和 II](https://leetcode.cn/problems/combination-sum-ii/) 【有重复数字+只能选择一次】
- [组合总和 III](https://leetcode.cn/problems/combination-sum-iii/)【「在 9 个数中选择 k 个数」的组合枚举】
- [组合总和 Ⅳ](https://leetcode.cn/problems/combination-sum-iv/)【无重复数字+爬楼梯】
- 最大连续 1 的个数
- [最大连续 1 的个数](https://leetcode.cn/problems/max-consecutive-ones/)【无翻转】
- [最大连续1的个数 II](https://leetcode.cn/problems/max-consecutive-ones-ii/)
- [最大连续1的个数 III](https://leetcode.cn/problems/max-consecutive-ones-iii/)【翻转K个零】
- 我不想上课【连续0的个数+翻转k个1】
- 打家劫舍
- 1.打家劫舍【线性房屋】
- 1.0递归+记忆化搜索
- 1.1一维数组
- 1.2三变量法
- 1.2三变量法【高手】【推荐】
- 1.3双数组法
- 2.打家劫舍2【环形房屋】
- 2.1双数组法
- 2.2 三变量法【新手】
- 2.2 三变量法【高手】【推荐※】
- 3.打家劫舍3【树形DP】
- 高手思路
- 4.删除相邻数字的最大分数
- 4.1双状态数组
- 4.2一维数组
- 4.3三变量法
- [打家劫舍 IV](https://leetcode.cn/problems/house-robber-iv/)【最小化最大值问题】
不同路径
不同路径
class Solution {int dfs(int i, int j, vector<vector<int>>& memo) {if (memo[i][j] != 0)return memo[i][j];if (i == 0 || j == 0)return 0;if (i == 1 && j == 1)return memo[i][j] = 1;memo[i][j] = dfs(i - 1, j, memo) + dfs(i, j - 1, memo);return memo[i][j];}public:int uniquePaths(int m, int n) {// 解法一:数学/组合数// long long ans = 1;// // 第一次y=1 最后一次y=m-1// // 第一次x=n 最后一次x=n+m-2// for (int x = n, y = 1; y < m; ++x, ++y) {// ans = ans * x / y;// }// return ans;// 解法二: 记忆化搜索vector<vector<int>> memo(m + 1, vector<int>(n + 1));return dfs(m, n, memo);// 解法三:动态规划// vector<vector<int>> dp(m + 1, vector<int>(n + 1));// dp[1][1] = 1;// for (int i = 1; i <= m; i++)// for (int j = 1; j <= n; j++) {// if (i == 1 && j == 1)// continue;// dp[i][j] = dp[i - 1][j] + dp[i][j - 1];// }// return dp[m][n];}
};
不同路径 II
class Solution {
public:int uniquePathsWithObstacles(vector<vector<int>>& ob) {int m = ob.size(), n = ob[0].size();vector<vector<int>> dp(m + 1, vector<int>(n + 1));dp[0][1] = 1;for (int i = 1; i <= m; i++)for (int j = 1; j <= n; j++)if (ob[i - 1][j - 1] == 0)dp[i][j] = dp[i - 1][j] + dp[i][j - 1];return dp[m][n];}
};
不同路径 III
class Solution {bool vis[21][21];int dx[4] = {1, -1, 0, 0};int dy[4] = {0, 0, 1, -1};int ret;int m, n, step;public:int uniquePathsIII(vector<vector<int>>& grid) {m = grid.size(), n = grid[0].size();int bx = 0, by = 0;for (int i = 0; i < m; i++)for (int j = 0; j < n; j++)if (grid[i][j] == 0)step++;else if (grid[i][j] == 1) {bx = i;by = j;}step += 2;vis[bx][by] = true;dfs(grid, bx, by, 1);return ret;}void dfs(vector<vector<int>>& grid, int i, int j, int count) {if (grid[i][j] == 2) {if (count == step) // 判断是否合法ret++;return;}for (int k = 0; k < 4; k++) {int x = i + dx[k], y = j + dy[k];if (x >= 0 && x < m && y >= 0 && y < n && !vis[x][y] &&grid[x][y] != -1) {vis[x][y] = true;dfs(grid, x, y, count + 1);vis[x][y] = false;}}}
};
组合总和
组合总和 【无重复数字+无限制选择次数】
class Solution {int aim;vector<int> path;vector<vector<int>> ret;public:vector<vector<int>> combinationSum(vector<int>& nums, int target) {aim = target;dfs(nums, 0, 0);return ret;}void dfss(vector<int>& nums, int pos, int sum) {if (sum == aim) {ret.push_back(path);return;}if (sum > aim || pos == nums.size())return;for (int i = pos; i < nums.size(); i++) {path.push_back(nums[i]);dfss(nums, i, sum + nums[i]);path.pop_back();}}void dfs(vector<int>& nums, int pos, int sum) {if (sum == aim) {ret.push_back(path);return;}if (sum > aim || pos == nums.size())return;for (int k = 0; k * nums[pos] + sum <= aim; k++) {if (k != 0)path.push_back(nums[pos]);dfs(nums, pos + 1, sum + k * nums[pos]);}for (int k = 1; k * nums[pos] + sum <= aim; k++) {path.pop_back();}}
};
组合总和 II 【有重复数字+只能选择一次】
class Solution {vector<vector<int>> ans;vector<int> path;int n;int aim;public:vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {ranges::sort(candidates);n = candidates.size();aim = target;dfs(candidates, 0, 0);return ans;}void dfs(vector<int>& candidates, int pos, int sum) {if (sum == aim) {ans.push_back(path);return;}if (sum > aim || pos == n)return;for (int i = pos; i < n; i++) {if (i > pos && candidates[i] == candidates[i - 1])continue;path.push_back(candidates[i]);dfs(candidates, i + 1, sum + candidates[i]);path.pop_back();}}
};
组合总和 III【「在 9 个数中选择 k 个数」的组合枚举】
class Solution {vector<int> path;vector<vector<int>> ans;int x;int xSum;public:void dfs(int cur, int n, int pathSum) {if (path.size() + (n - cur + 1) < x || path.size() > x)return;// accumulate(path.begin(), path.end(), 0) == xSumif (path.size() == x && pathSum == xSum) {ans.push_back(path);return;}path.push_back(cur);dfs(cur + 1, n, cur + pathSum);path.pop_back();dfs(cur + 1, n, pathSum);}vector<vector<int>> combinationSum3(int k, int n) {x = k;xSum = n;int pathSum = 0;dfs(1, 9, pathSum);return ans;}
};
组合总和 Ⅳ【无重复数字+爬楼梯】
class Solution {// dfs(i) 表示爬 i 个台阶的方案数int dfs(int i, vector<int>& nums, vector<int>& memo) {if (i == 0)return 1;int& res = memo[i]; // 注意这里是引用if (res != -1)return res;res = 0;for (int x : nums) {if (x <= i) {res += dfs(i - x, nums, memo);}}return res;}public:int combinationSum4(vector<int>& nums, int target) {vector<int> memo(target + 1, -1);// return dfs(target, nums, memo);vector<unsigned> f(target + 1);f[0] = 1;for (int i = 1; i <= target; i++) {for (int x : nums) {if (x <= i)f[i] += f[i - x];}}return f[target];}
};
最大连续 1 的个数
最大连续 1 的个数【无翻转】
class Solution {
public:int findMaxConsecutiveOnes(vector<int>& nums) {int maxCount = 0, count = 0;int n = nums.size();for (int i = 0; i < n; i++) {if (nums[i] == 1) {count++;} else {maxCount = max(maxCount, count);count = 0;}}maxCount = max(maxCount, count);return maxCount;}
};
最大连续1的个数 II
class Solution {
public:int findMaxConsecutiveOnes(vector<int>& nums, int k = 1) {int ret = 0;int left = 0, zeroNum = 0;for (int right = 0; right < nums.size(); right++) {if (nums[right] == 0)zeroNum++;while (zeroNum > k) // 理解这里的while的必要性【if不错但不好】{if (nums[left] == 0)zeroNum--;left++;}ret = max(ret, right - left + 1);}return ret;}
};
最大连续1的个数 III【翻转K个零】
class Solution {
public:int longestOnes(vector<int>& nums, int k) {int ret = 0;int left = 0, zeroNum = 0;for (int right = 0; right < nums.size(); right++) {if (nums[right] == 0)zeroNum++;while (zeroNum > k) // 理解这里的while的必要性【if不错但不好】{if (nums[left] == 0)zeroNum--;left++;}ret = max(ret, right - left + 1);}return ret;}
};
我不想上课【连续0的个数+翻转k个1】
#include <algorithm>
#include <iostream>
#include <vector>using namespace std;int longestOnes(vector<int>& nums, int k) {int ret = 0;int left = 0, oneNum = 0;for (int right = 0; right < nums.size(); right++) {if (nums[right] == 1)oneNum++;while (oneNum > k) {if (nums[left] == 1)oneNum--;left++;}ret = max(ret, right - left + 1);}return ret;
}
int main() {vector<int> days(31);for (int i = 0; i < 31; ++i) {cin >> days[i]; // 输入 31 天的课程情况}cout << longestOnes(days, 1) << endl;return 0;
}
打家劫舍
1.打家劫舍【线性房屋】
198. 打家劫舍 - 力扣(LeetCode)
1.0递归+记忆化搜索
class Solution {
public:int rob(vector<int>& nums) {int n = nums.size();vector<int> cache(n, -1);return robRecursive(n - 1, nums, cache);}int robRecursive(int i, vector<int>& nums, vector<int>& cache) {if (i < 0)return 0;if (cache[i] != -1)return cache[i];return cache[i] = max(robRecursive(i - 1, nums, cache),robRecursive(i - 2, nums, cache) + nums[i]);return cache[i];}
};
1.1一维数组
class Solution
{
public:int rob(vector<int> &nums){int n = nums.size();if (n == 0)return 0;// 房子编号0~n-1// dp[k] 从0偷到k获得的最大金额vector<int> dp(n, 0);dp[0] = nums[0];if (n == 1)return dp[0];dp[1] = max(nums[0], nums[1]);if (n == 2)return dp[1];for (int k = 2; k <= n - 1; k++){dp[k] = max(dp[k - 1], nums[k] + dp[k - 2]);}return dp[n - 1];}
};
1.2三变量法
class Solution
{
public:int rob(vector<int> &nums){int n = nums.size();if (n == 0)return 0;int prv = nums[0]; // dp[0]if (n == 1)return prv;int cur = max(nums[0], nums[1]); // dp[1]if (n == 2)return cur;// 房子编号0~n-1// dp[k] 从0偷到k获得的最大金额for (int i = 2; i < n; i++){// dp[k] = max(dp[k - 1], nums[k] + dp[k - 2]);int tmp = max(cur, nums[i] + prv);prv = cur;cur = tmp;}return cur;}
};
1.2三变量法【高手】【推荐】
class Solution {
public:int rob(vector<int>& nums) {int f0 = 0, f1 = 0;for (int x : nums) {int new_f = max(f1, f0 + x);f0 = f1;f1 = new_f;}return f1;}
};
1.3双数组法
class Solution
{
public:int massage(vector<int> &nums){int n = nums.size();if (n == 0)return 0;// f[i] 走到i时 偷nums[i]// g[i] 走到i时 不偷nums[i]vector<int> f(n);vector<int> g(n); // auto g = f;f[0] = nums[0];for (int i = 1; i < n; i++){f[i] = nums[i] + g[i - 1];g[i] = max(f[i - 1], g[i - 1]);}return max(f[n - 1], g[n - 1]);}
};
2.打家劫舍2【环形房屋】
打家劫舍2
2.1双数组法
class Solution {
public:int rob(vector<int>& nums) {int n = nums.size();return max(nums[0] + rob1(nums, 2, n - 2), rob1(nums, 1, n - 1));}int rob1(vector<int>& nums, int left, int right) {if (left > right)return 0;int n = nums.size();vector<int> f(n);auto g = f;f[left] = nums[left];for (int i = left + 1; i <= right; i++) {f[i] = g[i - 1] + nums[i];g[i] = max(f[i - 1], g[i - 1]);}return max(f[right], g[right]);}
};
2.2 三变量法【新手】
class Solution
{
public:int robRange(vector<int> &nums, int start, int end){int n = end - start + 1;if (n == 0)return 0;int prv = nums[start]; // dp[k-2]if (n == 1)return prv;int cur = max(nums[start], nums[start + 1]); // dp[k-1]if (n == 2)return cur;for (int i = start + 2; i <= end; i++){// dp[k] = max(dp[k - 1], nums[k - 1] + dp[k - 2]);int tmp = max(cur, nums[i] + prv);prv = cur;cur = tmp;}return cur;}int rob(vector<int> &nums){int n = nums.size();if (n == 1)return nums[0];else if (n == 2)return max(nums[0], nums[1]);else if (n == 3)return max(max(nums[0], nums[1]), nums[2]);// 偷nums[0]不能偷nums[1]和nums[n-1] 能偷[2, n - 2]// 不偷nums[0] 能偷[1, n - 1]return max(nums[0] + robRange(nums, 2, n - 2), robRange(nums, 1, n - 1));}
};
2.2 三变量法【高手】【推荐※】
class Solution {int rob1(vector<int>& nums, int start, int end) {int f0 = 0, f1 = 0;for (int i = start; i <= end; i++) {int new_f = max(f1, f0 + nums[i]);f0 = f1;f1 = new_f;}return f1;}public:int rob(vector<int>& nums) {int n = nums.size();return max(nums[0] + rob1(nums, 2, n - 2), rob1(nums, 1, n - 1));}
};
3.打家劫舍3【树形DP】
高手思路
class Solution {pair<int, int> dfs(TreeNode* node) {if (node == nullptr) { // 递归边界return {0, 0}; // 没有节点,怎么选都是 0}auto [l_rob, l_not_rob] = dfs(node->left); // 递归左子树auto [r_rob, r_not_rob] = dfs(node->right); // 递归右子树int rob = l_not_rob + r_not_rob + node->val; // 选int not_rob = max(l_rob, l_not_rob) + max(r_rob, r_not_rob); // 不选return {rob, not_rob};}public:int rob(TreeNode* root) {auto [root_rob, root_not_rob] = dfs(root);return max(root_rob, root_not_rob); // 根节点选或不选的最大值}
};
4.删除相邻数字的最大分数
删除相邻数字的最大分数_牛客题霸_牛客网 (nowcoder.com)
- 一个数组选了x可以得x分 但是值为x-1和x+1的数将会消失 直到数字全被消失或选择 问最高分数
- 遍历数组arr 填充hash arr中的per在hash中作下标 表示 【谁 出现的总和】如4在arr中出现了2次 则hash[4]=8
- 由此问题转变为 在hash中 我“偷”了某个下标i 获得了hash[i]分数 与i相邻的就不能偷了
4.1双状态数组
#include <iostream>
#include <vector>
using namespace std;int main()
{const int N = 1e4 + 10;int hash[N] = {0};int n = 0;cin >> n;int per = 0;int end = 0;for (int i = 0; i < n; i++){cin >> per;end = per > end ? per : end;hash[per] += per;}vector<int> f(end + 1, 0);vector<int> g(end + 1, 0);for (int i = 1; i <= end; i++){f[i] = g[i - 1] + hash[i];g[i] = max(f[i - 1], g[i - 1]);}cout << max(f[end], g[end]) << endl;return 0;
}
4.2一维数组
#include <iostream>
#include <vector>
using namespace std;int main()
{int n = 0;cin >> n;int per = 0;int end = 0;const int N = 1e4 + 10;int hash[N] = {0};for (int i = 0; i < n; i++){cin >> per;end = per > end ? per : end;hash[per] += per;}vector<int> dp(end + 1, 0);// 房子编号0~n-1// dp[k] 从0偷到k获得的最大金额dp[0] = hash[0];dp[1] = max(hash[0], hash[1]);for (int k = 2; k <= end; k++){dp[k] = max(dp[k - 1], hash[k] + dp[k - 2]);}cout << dp[end] << endl;return 0;
}
4.3三变量法
#include <iostream>
#include <vector>
using namespace std;int main()
{const int N = 1e4 + 10;int hash[N] = {0};int n = 0;cin >> n;int per = 0;int end = 0;for (int i = 0; i < n; i++){cin >> per;end = per > end ? per : end;hash[per] += per;}// 房子编号0~n-1// dp[k] 从0偷到k获得的最大金额int prv = hash[0]; // dp[0]int cur = max(hash[0], hash[1]); // dp[1]for (int i = 2; i <= end; i++){// dp[k] = max(dp[k - 1], hash[k] + dp[k - 2]);int tmp = max(cur, hash[i] + prv);prv = cur;cur = tmp;}cout << cur << endl;return 0;
}
打家劫舍 IV【最小化最大值问题】
相关文章:
【力扣系列题目】不同路径 组合总和 最大连续1个数 打家劫舍{持续更新中...}
文章目录 不同路径不同路径[不同路径 II](https://leetcode.cn/problems/unique-paths-ii/)[不同路径 III](https://leetcode.cn/problems/unique-paths-iii/) 组合总和组合总和 【无重复数字无限制选择次数】[组合总和 II](https://leetcode.cn/problems/combination-sum-ii/)…...
方法建议ChatGPT提示词分享
方法建议 ChatGPT能够根据您的具体需求提供针对性的建议,帮助您选择最合适的研究方法。通过清晰的提示,ChatGPT可以精准地为您提供最契合的研究方案。此外,它还能协助您将这些方法灵活地应用于新的研究环境,提出创新的技术解决方案…...
Cursor的详细使用指南
以下是一份关于 Cursor 的详细使用指南: 一、安装与设置 下载与安装: 首先,访问 Cursor 的官方网站,根据你的操作系统(Windows、Mac 或 Linux)下载相应的安装程序。运行安装程序,按照屏幕上的提…...
Python----Python高级(正则表达式:语法规则,re库)
一、正则表达式 1.1、概念 正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、 regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母࿰…...
电脑如何访问手机文件?
手机和电脑已经深深融入了我们的日常生活,无时无刻不在为我们提供服务。除了电脑远程操控电脑外,我们还可以在电脑上轻松地访问Android或iPhone手机上的文件。那么,如何使用电脑远程访问手机上的文件呢? 如何使用电脑访问手机文件…...
计算最接近的数
计算最接近的数 真题目录: 点击去查看 E B卷 100分题型 题目描述 给定一个数组X和正整数K,请找出使表达式: X[i] - X[i 1] - … - X[i K - 1] 结果最接近于数组中位数的下标 i ,如果有多个 i 满足条件,请返回最大的 i. 其中&…...
Ubuntu离线docker compose安装DataEase 2.10.4版本笔记
1、先准备一个可以正常上网的相同版本的Ubuntu系统,可以使用虚拟机。Ubuntu系统需要安装好docker compose或docker-compose 2、下载dataease-online-installer-v2.10.4-ce.tar在线安装包,解压并执行install.sh进行安装和启动 3、导出docker镜像 sudo d…...
C#使用WMI获取控制面板中安装的所有程序列表
C#使用WMI获取控制面板中安装的所有程序列表 WMI 全称Windows Management Instrumentation,Windows Management Instrumentation是Windows中用于提供共同的界面和对象模式以便访问有关操作系统、设备、应用程序和服务的管理信息。如果此服务被终止,多数基于 Windo…...
WPF2-1在xaml为对象的属性赋值.md
1. AttributeValue方式 1.1. 简单属性赋值1.2. 对象属性赋值 2. 属性标签的方式给属性赋值3. 标签扩展 (Markup Extensions) 3.1. StaticResource3.2. Binding 3.2.1. 普通 Binding3.2.2. ElementName Binding3.2.3. RelativeSource Binding3.2.4. StaticResource Binding (带参…...
社区版Dify实现文生视频 LLM+ComfyUI+混元视频
社区版Dify实现文生视频 LLMComfyUI混元视频 一、 社区版Dify实现私有化混元视频效果二、为什么社区版Dify可以在对话框实现文生视频?LLMComfyUI混元视频 实现流程图(重点)1. 文生视频模型支持ComfyUI2. ComfyUI可以轻松导出API实现封装3. Di…...
QT调用OpenSceneGraph
OSG和osgQt编译教程,实测通过 一、下载OpenSceneGraph OpenSceneGraphhttps://github.com/openscenegraph/OpenSceneGraph 二、使用CMAKE编译OpenSceneGraph 1.打开cmake,配置源代码目录 2. CMAKE_INSTALL_PREFIX设置为install文件夹,生…...
Qt基础项目篇——Qt版Word字处理软件
一、核心功能 本软件为多文档型程序,界面是标准的 Windows 主从窗口 拥有:主菜单、工具栏、文档显示区 和 状态栏。 所要实现的东西,均在下图了。 开发该软件,主要分为下面三个阶段 1)界面设计开发 多窗口 MDI 程序…...
【Postgres_Python】使用python脚本批量创建和导入多个PG数据库
之前批量创建和导入数据库分为2个python脚本进行,现整合优化代码合并为一个python脚本,可同步实现数据库的创建和数据导入。之前的文章链接: 【Postgres_Python】使用python脚本批量创建PG数据库 【Postgres_Python】使用python脚本将多个.S…...
消息队列篇--原理篇--RabbitMQ和Kafka对比分析
RabbitMQ和Kafka是两种非常流行的消息队列系统,但它们的设计哲学、架构特点和适用场景存在显著差异。对比如下。 1、架构设计 RabbitMQ: 基AMQP协议:RabbitMQ是基于AMQP(高级消息队列协议)构建的,支持多…...
俄语画外音的特点
随着全球媒体消费的增加,语音服务呈指数级增长。作为视听翻译和本地化的一个关键方面,画外音在确保来自不同语言和文化背景的观众能够以一种真实和可访问的方式参与内容方面发挥着重要作用。说到俄语,画外音有其独特的特点、挑战和复杂性&…...
【机器学习实战中阶】音乐流派分类-自动化分类不同音乐风格
音乐流派分类 – 自动化分类不同音乐风格 在本教程中,我们将开发一个深度学习项目,用于自动化地从音频文件中分类不同的音乐流派。我们将使用音频文件的频率域和时间域低级特征来分类这些音频文件。 对于这个项目,我们需要一个具有相似大小和相似频率范围的音频曲目数据集…...
Keil5 IDE使用笔记
1 Keil生成bin文件 $K\ARM\ARMCLANG\bin\fromelf.exe --bin --outputL/L.bin !L $K: 表示 Keil 5的安装路径 L: 表示 工程名 !L: 表示 工程名.arf 后缀的文件 可根据实际需要修改 --output 的值调整生成的bin文件的存放路径。 2 下载程序报错 No ST-LINK detected Error: Fla…...
自动化办公|使用Python重命名并移动文件到对应文件夹
在日常的文件管理和处理过程中,我们可能会遇到需要将文件整理到不同文件夹中的需求。例如,我们有一个包含多个文件的目录,文件名的首字符表示文件应该存放在哪个文件夹中。我们可以使用Python脚本来自动完成这个任务,实现文件的分…...
【全栈】SprintBoot+vue3迷你商城(5)
【全栈】SprintBootvue3迷你商城(5) 上一期我们基本完成了与用户相关的接口,而这些接口都是用户才能干的事情,如果你没登录,那么这些接口功能你都不能实现。 那么如何做到这一步呢? 1.Token 作用 身份…...
Java 并发编程:Java 中的乐观锁与 CAS
大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 025 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进一步完善自己对整个 Java 技术体系来充实自…...
模拟飞行入坑(五) P3D 多通道视角配置 viewgroup
背景: P3D进行多个屏幕显示的时候,如果使用英伟达自带的屏幕融合成一个屏,或者使用P3D单独拉伸窗口,会使得P3D的画面被整体拉伸,又或者,当使用Multichannel进行多个设备联动时,视角同步组合需要配置&#…...
react中hooks之 React 19 新 Hooks useActionState useFormStatus用法总结
React 19 新 Hooks 使用指南: useActionState & useFormStatus 目录 useActionStateuseFormStatus最佳实践 useActionState 概述 useActionState 是 React 19 引入的新 Hook,用于处理表单 action 的状态更新。它允许你基于表单 action 的结果来更新组件状态…...
为AI聊天工具添加一个知识系统 之48 蒙板程序设计(第二版):Respect九宫格【社会形态:治理】
本文要点 1、词汇表Vocabulary (普通名词) 1) 三组词(数据库支持的三个数字散列): 工作,工件,工具。论题,主题词,关键字。口号,符号,编号。 2…...
靠右行驶数学建模分析(2014MCM美赛A题)
笔记 题目 要求分析: 比较规则的性能,分为light和heavy两种情况,性能指的是 a.流量与安全 b. 速度限制等分析左侧驾驶分析智能系统 论文 参考论文 两类规则分析 靠右行驶(第一条)2. 无限制(去掉了第一条…...
6.5、密集波分复用系统(DWDM)/OTN
图中从左到右分为多个部分,分别代表了信号的输入、传输和输出过程。 左侧是客户侧,有普通接口和彩色接口,分别连接到光转发单元(OTU)。 中间部分是传输线路,包含多个光放大器(OBA、OLA、OPA&…...
Unity3D基于Unity整合BEPUphysicsint物理引擎实战详解
引言 Unity3D是一款流行的游戏引擎,提供了丰富的功能和工具,使开发者能够轻松创建各种类型的游戏。其中,帧同步技术是游戏开发中至关重要的一环,它能确保多个玩家在同一时间内看到的游戏状态是一致的。BEPUphysicsint是一个基于U…...
《探秘鸿蒙Next:如何保障AI模型轻量化后多设备协同功能一致》
在鸿蒙Next的多设备协同场景中,确保人工智能模型轻量化后功能的一致性是一项极具挑战性但又至关重要的任务。以下是一些关键的方法和策略。 统一的模型架构与标准 采用标准化框架:选择如TensorFlow Lite、PyTorch Mobile等在鸿蒙Next上适配良好的轻量化…...
微服务知识——4大主流微服务架构方案
文章目录 1、微服务聚合模式2、微服务共享模式3、微服务代理模式4、微服务异步消息模式 微服务是大型架构的必经之路,也是大厂重点考察对象,下面我就重点详解4大主流微服务架构方案。 1、微服务聚合模式 微服务聚合设计模式,解决了如何从多个…...
Java 方法重写
目录 一、什么是方法重写,为什么需要它 二、方法重写的规则 三、方法重写的实际应用场景 四、方法重写与重载的区别 五、总结 在 Java 编程的精彩世界里,方法重写是一项极为重要且实用的特性,它犹如一把神奇的钥匙,为我们开启…...
华为E9000刀箱服务器监控指标解读
美信监控易内置了数千种常见设备监测器,能够监测超过20万项指标。这些指标涵盖了从硬件设备到软件系统,从网络性能到安全状态等各个方面。如下基于美信监控易——IT基础监控模块,对华为E9000刀箱服务器部分监控指标进行解读。 一、华为E9000…...
正则表达式基础与应用
什么是正则表达式? 正则表达式(Regular Expression,简称regex)是一种用于描述字符串结构的语法规则。它定义了一个搜索模式,可以用来匹配、替换或提取文本中的子串。正则表达式广泛应用于文本处理、数据验证、查找和替…...
微信小程序使用上拉加载onReachBottom。页面拖不动。一直无法触发上拉的事件。
1,可能是原因是你使用了scroll-view的标签,用onReachBottom触发加载事件。这两个是有冲突的。没办法一起使用。如果页面的样式是滚动的是无法去触发页面的onReachBottom的函数的。因此,你使用overflow:auto.来使用页面的某些元素滚动…...
9. 神经网络(一.神经元模型)
首先,先看一个简化的生物神经元结构: 生物神经元有多种类型,内部也有复杂的结构,但是可以把单个神经元简化为3部分组成: 树突:一个神经元往往有多个树突,用于接收传入的信息。轴突:…...
Mysql安装,mysql-installer-community-8.0.41.0
“windowR"键弹出运行框,输入”cmd"进入window命令提示符,输入“mysql -uroot -p"按下回车,再输入密码,按下回车,出现下面界面则是配置成功。 默认会在 C:\Program Files\MySQL\MySQL Server 8.0\bin …...
吴恩达深度学习——神经网络介绍
文章内容来自BV11H4y1F7uH,仅为个人学习所用。 文章目录 什么是神经网络引入神经网络神经元激活函数ReLU隐藏单元 用神经网络进行监督学习监督学习与无监督学习举例 什么是神经网络 引入 已经有六个房子的数据集,横轴为房子大小,纵轴为房子…...
【SpringBoot】SpringBoot中分页插件(PageHelper)的使用
目录 1.分页概念 2.原生写法 3.PageHelper插件分页查询 3.1 介绍 3.2?使用 3.3 Page对象和PageInf对象 1.分页概念 用户查询的数据不可能一次性全部展示给用户(如果用户有一万条数据呢),而是分页展示给用户,这就是分页查询…...
JavaScript DOM 操作与事件处理
Hi,我是布兰妮甜 !在现代Web开发中,JavaScript不仅是用来增强用户体验的工具,它更是创建动态、交互式网页的关键。通过操作文档对象模型(DOM)和处理用户事件,开发者能够构建出响应迅速且功能丰富…...
rstrip 方法是 Python 字符串的一个内置方法,用于 删除字符串右边(末尾)的指定字符
rstrip 方法是 Python 字符串的一个内置方法,用于 删除字符串右边(末尾)的指定字符。 语法: string.rstrip([chars])string:原始字符串。chars:可选参数,指定要删除的字符。默认为 None&#…...
【Elasticsearch】腾讯云安装Elasticsearch
Elasticsearch 认识Elasticsearch安装Elasticsearch安装Kibana安装IK分词器分词器的作用是什么?IK分词器有几种模式?IK分词器如何拓展词条?如何停用词条? 认识Elasticsearch Elasticsearch的官方网站如下 Elasticsearch官网 Ela…...
rsync结合inotify实现文件实时同步
rsync 1.复制工具 本地复制 远程复制 cp dd 跨主机传递文件 rz sz ftp scp rsync nfs samba drdb 2.rsync作用 实现文件的备份,可以是当前主机,也可以是远程主机;可以完全备份,也可以是增量备份 2.1功能 类似于cp的复制功能…...
浅谈 PID 控制算法
PID 控制算法概念 在我们的生活中可能大家都没有听说过 PID 控制算法,但它可以说是无处不在,小到空调的温度控制、无人机的精准悬停、机器人运作系统,大到飞机和火箭的飞行姿态控制都有 PID 的身影。 PID 控制算法,即比例 - 积分…...
react中hooks之useId用法总结以及与useRef用法区别
React useId Hook 使用指南 概述 useId 是 React 18 引入的新 Hook,用于生成唯一的 ID,主要用于可访问性(accessibility)属性。它在服务端和客户端渲染时都能保持一致性。 useId vs useRef useId: 生成稳定的唯一标识符&#…...
Spring Boot AOP实现动态数据脱敏
依赖&配置 <!-- Spring Boot AOP起步依赖 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency>/*** Author: 说淑人* Date: 2025/1/18 23:03* Desc…...
AutoGen入门——快速实现多角色、多用户、多智能体对话系统
1.前言 如https://github.com/microsoft/autogen所述,autogen是一多智能体的框架,属于微软旗下的产品。 依靠AutoGen我们可以快速构建出一个多智能体应用,以满足我们各种业务场景。 本文将以几个示例场景,使用AutoGen快速构建出…...
.NET Framework
.NET Framework 是微软推出的一个软件开发平台,主要用于构建和运行 Windows 应用程序。它是 .NET 生态系统的早期版本,专注于 Windows 平台,并提供了丰富的类库和运行时环境。 注意事项 跨平台限制:.NET Framework 主要适用于 W…...
算法中的移动窗帘——C++滑动窗口算法详解
1. 滑动窗口简介 滑动窗口是一种在算法中常用的技巧,主要用来处理具有连续性的子数组或子序列问题。通过滑动窗口,可以在一维数组或字符串上维护一个固定或可变长度的窗口,逐步移动窗口,避免重复计算,从而提升效率。常…...
DuckDB:Golang操作DuckDB实战案例
DuckDB是一个嵌入式SQL数据库引擎。它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的。DuckDB支持各种数据类型和SQL特性。凭借其在以内存为中心的环境中处理高速分析的能力,它迅速受到数据科学家和分析师的欢迎。在这篇博文中࿰…...
C++通过输入3D相机像素点集{u、v、z}和机械手世界坐标点集{X、Y、Z}求得变换矩阵RT(眼在手外)
👑主页:吾名招财 👓简介:工科学硕,研究方向机器视觉,爱好较广泛… 💫签名:面朝大海,春暖花开! C++通过输入3D相机像素点集{u、v、z}和机械手世界坐标点集{X、Y、Z}求得变换矩阵RT(眼在手外) 引言原理简介点集数据(含像素坐标、世界坐标及求解后的变换矩阵)配…...
手机怎么远程操控电脑?
远程看看是一款免费使用的远程控制软件,兼容 Windows、iOS 和 Android 系统,用户可以通过电脑或移动设备轻松远程控制电脑。不仅如此,远程看看还提供了文件传输、在线聊天和隐私屏等实用功能。如果您需要在远程操作时隐藏被控电脑的操作界面&…...
【Golang/gRPC/Nacos】在golang中将gRPC和Nacos结合使用
Nacos与gRPC 前言 关于这部分,前段时间我在看文档以及视频教程的时候,怎么都想不明白,到底为什么要用gRPC是什么,他在项目中应该充当什么样的角色?Nacos又是如何和他结合的? 于是我就决定去看看一些小项…...