您的位置:首页 > 财经 > 产业 > 枣庄定制网站建设公司_想招聘员工去哪个网站_关键词排名优化如何_百度热词指数

枣庄定制网站建设公司_想招聘员工去哪个网站_关键词排名优化如何_百度热词指数

2024/12/27 1:49:52 来源:https://blog.csdn.net/sjsjs11/article/details/144648204  浏览:    关键词:枣庄定制网站建设公司_想招聘员工去哪个网站_关键词排名优化如何_百度热词指数
枣庄定制网站建设公司_想招聘员工去哪个网站_关键词排名优化如何_百度热词指数

给你一个大小为 m x n 的二维矩形 grid 。每次 操作 中,你可以将 任一 格子的值修改为 任意 非负整数。完成所有操作后,你需要确保每个格子 grid[i][j] 的值满足:

如果下面相邻格子存在的话,它们的值相等,也就是 grid[i][j] == grid[i + 1][j](如果存在)。
如果右边相邻格子存在的话,它们的值不相等,也就是 grid[i][j] != grid[i][j + 1](如果存在)。
请你返回需要的 最少 操作数目。

示例 1:
输入:grid = [[1,0,2],[1,0,2]]

输出:0

解释:
在这里插入图片描述
矩阵中所有格子已经满足要求。

示例 2:
输入:grid = [[1,1,1],[0,0,0]]

输出:3

解释:
在这里插入图片描述
将矩阵变成 [[1,0,1],[1,0,1]] ,它满足所有要求,需要 3 次操作:

将 grid[1][0] 变为 1 。
将 grid[0][1] 变为 0 。
将 grid[1][2] 变为 1 。

示例 3:
输入:grid = [[1],[2],[3]]

输出:2

解释:
在这里插入图片描述
这个矩阵只有一列,我们可以通过 2 次操作将所有格子里的值变为 1 。

提示:
1 <= n, m <= 1000
0 <= grid[i][j] <= 9

二维DP

class Solution {
public:int minimumOperations(vector<vector<int>>& grid) {int m = grid.size(), n = grid[0].size();vector<vector<int>> dp(n, vector<int>(10, 1e9));//初始化第一列for(int k = 0; k <= 9; k++){int cost = 0;for(int i = 0; i < m; i++){cost += (grid[i][0] != k);}dp[0][k] = cost;}for(int j = 1; j < n; j++){vector<int> new_dp(10, 1e9);for(int k = 0; k <= 9; k++){    //当前列的值为kint cost = 0;for(int i = 0; i < m; i++){cost += (grid[i][j] != k);}for(int u = 0; u <= 9; u++){    //上一列的值为uif(u != k){new_dp[k] = min(new_dp[k], dp[j-1][u] + cost);}}}dp[j] = move(new_dp);}int ans = 1e9;for(int k = 0; k <= 9; k++){ans = min(ans, dp[n-1][k]);}return ans;}
};

这道题我们可以定义一个二维的数组dp[j][v]的含义是第j列第一个格子为v时的最小代价。
首先我们要初始化第一列的值,我们假设第一列的值可能是0~9之间任何一个值k,然后grid第一列中不等于k则要修改成k,所以有多少个不等于k的值就要操作多少次,记录到cost中,最后dp[0][k] = cost。

接下来到代码核心部分,先遍历每一列j,然后我们定义一个数组new_dp[k]来表示该列的值为k的最小操作次数是多少。我们先记录cost也就是如果第j列值为k的话第j列要操作几次,然后我们再假设上一列的值u,只有当上一列的值u不等于当前列的值k的时候,当前列才能从上一列进行状态转移而来,对应方程new_dp[k] = min(new_dp[k], dp[j-1][u] + cost);。最后new_dp[k]会根据上一列的不同u来计算出最小的new_dp[k],最后我们只需要将new_dp的值对应到dp[j]中即可。

最后我们定义一个变量ans来记录前n-1列(从0开始索引)并且最后一列不同数时的总最小操作次数,最后返回ans即可。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com