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

有什么做网站的国企网站制作推广

有什么做网站的国企,网站制作推广,网站建设策划书是有谁编写的,yellow在线观看高清完整版【LetMeFly】1289.下降路径最小和 II:通俗易懂地讲解O(n^2) O(1)的做法 力扣题目链接:https://leetcode.cn/problems/minimum-falling-path-sum-ii/ 给你一个 n x n 整数矩阵 arr ,请你返回 非零偏移下降路径 数字和的最小值。 非零偏移下…

【LetMeFly】1289.下降路径最小和 II:通俗易懂地讲解O(n^2) + O(1)的做法

力扣题目链接:https://leetcode.cn/problems/minimum-falling-path-sum-ii/

给你一个 n x n 整数矩阵 arr ,请你返回 非零偏移下降路径 数字和的最小值。

非零偏移下降路径 定义为:从 arr 数组中的每一行选择一个数字,且按顺序选出来的数字中,相邻数字不在原数组的同一列。

 

示例 1:

输入:arr = [[1,2,3],[4,5,6],[7,8,9]]
输出:13
解释:
所有非零偏移下降路径包括:
[1,5,9], [1,5,7], [1,6,7], [1,6,8],
[2,4,8], [2,4,9], [2,6,7], [2,6,8],
[3,4,8], [3,4,9], [3,5,7], [3,5,9]
下降路径中数字和最小的是 [1,5,7] ,所以答案是 13 。

示例 2:

输入:grid = [[7]]
输出:7

 

提示:

  • n == grid.length == grid[i].length
  • 1 <= n <= 200
  • -99 <= grid[i][j] <= 99

方法一:动态规划

这道题其实思路很简单:

  1. gird[i][j]来自gird[i - 1]的哪一个?当然是gird[i - 1]中最小的那一个。
  2. 如果grid[i - 1]中最小的那个元素恰好是j怎么办?那么gird[i][j]就来自gird[i - 1]中第二小的那一个。

不难发现,我们只关注上一行最小的两个元素(的位置)

具体实现

写一个函数findMin2(v),用来寻找数组v中最小的两个元素的位置。

i i i从第2行开始遍历地图grid:

  • j j j遍历 g i r d [ i ] gird[i] gird[i]
    • 如果 j j j等于上一行最小元素的下标: g r i d [ i ] [ j ] + = g r i d [ i − 1 ] [ 第二小元素的下标 ] grid[i][j] += grid[i - 1][第二小元素的下标] grid[i][j]+=grid[i1][第二小元素的下标]
    • 否则 g r i d [ i ] [ j ] + = g r i d [ i − 1 ] [ 最小元素的下标 ] grid[i][j] += grid[i - 1][最小元素的下标] grid[i][j]+=grid[i1][最小元素的下标]

最终返回最后一行的最小元素即可。

  • 时间复杂度 O ( n 2 ) O(n^2) O(n2),其中 s i z e ( g i r d ) = n × n size(gird) = n\times n size(gird)=n×n
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++

class Solution {
private:pair<int, int> findMin2(vector<int>& v) {  // 只接收长度大于等于2的vpair<int, int> ans;int m = v[0], loc = 0;for (int i = 0; i < v.size(); i++) {if (v[i] < m) {m = v[i], loc = i;}}ans.first = loc;loc = ans.first ? 0 : 1, m = v[loc];  // 如果第一个元素是最小的,那么找第二个最小元素的时候就从上一行的第二个元素开始for (int i = 0; i < v.size(); i++) {if (v[i] < m && i != ans.first) {m = v[i], loc = i;}}ans.second = loc;return ans;}
public:int minFallingPathSum(vector<vector<int>>& grid) {int n = grid.size();for (int i = 1; i < n; i++) {pair<int, int> last2min = findMin2(grid[i - 1]);  // i >= 1说明grid[i - 1].size() >= 2for (int j = 0; j < n; j++) {grid[i][j] += (j == last2min.first ? grid[i - 1][last2min.second] : grid[i - 1][last2min.first]);}}return *min_element(grid.back().begin(), grid.back().end());}
};

Python

# from typing import Listclass Solution:def findMin2(self, v: List[int]) -> List[int]:ans = [0, 0]m, loc = v[0], 0for i in range(len(v)):if v[i] < m:m, loc = v[i], ians[0] = locloc = 0 if ans[0] else 1m = v[loc]for i in range(len(v)):if v[i] < m and i != ans[0]:m, loc = v[i], ians[1] = locreturn ansdef minFallingPathSum(self, grid: List[List[int]]) -> int:n = len(grid)for i in range(1, n):last2min = self.findMin2(grid[i - 1])for j in range(n):grid[i][j] += grid[i - 1][last2min[0]] if j != last2min[0] else grid[i - 1][last2min[1]]return min(grid[-1])

同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/132201281

http://www.hrbkazy.com/news/33178.html

相关文章:

  • 网站开发日志如何做个网站推广自己产品
  • 我想学网站建设做个公司网站一般需要多少钱
  • 外贸seo优化方法seo优化推广工程师招聘
  • 信誉好的盐城网站开发百度收录排名查询
  • jsp网站开发技术淘宝宝贝关键词排名查询工具
  • wordpress 批量改日期seo技巧与技术
  • 做简历的网站有seo sem是什么职位
  • 关于建设网站群的报告厦门关键词排名优化
  • 中国建设银行官方网站网络推广团队
  • 门户网站 布局如何优化关键词排名到首页
  • 哪个网站可以做h5页面今日油价92汽油价格
  • 山东住房和城乡建设厅网站电话外链服务
  • 怎样在网站做咨询医生挣钱小学生收集的新闻10条
  • 网站开发ceil(5.5)seo属于什么职位类型
  • WordPress插件手动北京网站优化怎么样
  • 怎么做网站推广林芝地区seo竞价推广
  • 泊头做网站百度竞价托管一月多少钱
  • 网站开发人员职责seo在线推广
  • 做网站的价格是多少免费网站推广平台
  • 企业网站打不开什么原因百度认证是什么
  • 长沙美容网站建设深圳seo优化公司哪家好
  • 如何在网站做qq群链接企业文化是什么
  • 网站建设什么牌子好长沙专业seo优化公司
  • 如何做网站滚动条杭州seo俱乐部
  • 网站风格化设计方案百度官方版
  • 徐州最好网站建设中国十大知名网站
  • wordpress-5.0升级未被安装杭州余杭区抖音seo质量高
  • 做爰在线网站腾讯控股第三季度营收1401亿
  • 凡科做公司网站怎么收费关键词歌曲免费听
  • 西安哪家公司做的网站好做网站关键词优化的公司