r级书屋女兵

r级书屋女兵 你的位置:r级书屋女兵 > 巨乳 gif >

91porn.me 2024-12-22: 矩阵中的最大得分。用go道话, 给定一个由正整数组成

发布日期:2024-12-23 06:48    点击次数:135

91porn.me 2024-12-22: 矩阵中的最大得分。用go道话, 给定一个由正整数组成

2024-12-22:矩阵中的最大得分。用go道话,给定一个由正整数组成的 m x n 矩阵 grid91porn.me,你不错从恣意单位格脱手,迁移到正下方或正右侧的任一单位格(不条目相邻)。

在从值为 c1 的单位格迁移到值为 c2 的单位格时,得分打算为 c2 - c1。

你的观念是至少迁移一次,并找到简略取得的最大总得分。

请复返这个最大得分。

m == grid.length。

n == grid[i].length。

2

4

1

输入:grid = [[9,5,7,3],[8,9,6,1],[6,7,14,3],[2,5,3,1]]。

输出:9。

证实:从单位格 (0, 1) 脱手,并现实以下迁移:

情欲九歌十大禁片

1.从单位格 (0, 1) 迁移到 (2, 1),得分为 7 - 5 = 2 。

2.从单位格 (2, 1) 迁移到 (2, 2),得分为 14 - 7 = 7 。

总得分为 2 + 7 = 9 91porn.me。

谜底2024-12-22:

chatgpt[1]

题目来自leetcode3148。

大体纪律如下:

1.创建一个二维数组 premin 用于存储每个单位格的最小值,运行化为 math.MaxInt 值。

2.运行化一个变量 ans 用于纪录最大得分,运行值为 math.MinInt。

3.遍历矩阵的每个单位格,韩国伦理片关于刻下单位格 (i, j):

• 设定一个变量 pre 用于纪录从上方或左方迁移经由中的最小值,运行值为 math.MaxInt。

• 若是刻下位置不在第一瞥,则更新 pre 为 min(pre, premin[(i-1)&1][j])。

• 若是刻下位置不在第一列,则更新 pre 为 min(pre, premin[i&1][j-1])。

• 若是 i+j > 0,即不在第一瞥且不在第一列,则更新 ans 为 max(ans, grid[i][j] - pre)。

• 将刻下位置的值更新为 min(pre, grid[i][j])。

4.复返最终的最大得分 ans。

总的技艺复杂度:

• 外层轮回遍历行,内层轮回遍历列,技艺复杂度为 O(m*n)。

总的独特空间复杂度:

• 除了输入矩阵外,主要独特使用了 premin 二维数组和几个变量,它们占用的空间与输入矩阵大小干系。

• premin 占用的空间是 O(n),其他独特空间占用是 O(1)。

要而论之,总的技艺复杂度为 O(m*n),总的独特空间复杂度为 O(n)。

Go竣工代码如下:

package mainimport ( "fmt" "math")func maxScore(grid [][]int) int { m, n := len(grid), len(grid[0]) premin := make([][]int, 2) for i := range premin { premin[i] = make([]int, n) for j := range premin[i] { premin[i][j] = math.MaxInt } } ans := math.MinInt for i := 0; i 0 { pre = min(pre, premin[(i - 1) & 1][j]) } if j > 0 { pre = min(pre, premin[i & 1][j - 1]) } // i = j = 0 时莫得转机 if i + j > 0 { ans = max(ans, grid[i][j] - pre) } premin[i&1][j] = min(pre, grid[i][j]) } } return ans}func main { grid := [][]int{{9,5,7,3},{8,9,6,1},{6,7,14,3},{2,5,3,1}} fmt.Println(maxScore(grid))}

Rust竣工代码如下:

use std::cmp::{min, max};fn max_score(grid: &Vec>) -> i32 { let m = grid.len; let n = grid[0].len; let mut premin = vec![vec![i32::MAX; n]; 2]; let mut ans = i32::MIN; for i in 0..m { for j in 0..n { let mut pre = i32::MAX; if i > 0 { pre = min(pre, premin[(i - 1) & 1][j]); } if j > 0 { pre = min(pre, premin[i & 1][j - 1]); } if i + j > 0 { ans = max(ans, grid[i][j] - pre); } premin[i & 1][j] = min(pre, grid[i][j]); } } ans}fn main { let grid = vec![ vec![9, 5, 7, 3], vec![8, 9, 6, 1], vec![6, 7, 14, 3], vec![2, 5, 3, 1] ]; println!("{}", max_score(&grid));}

援用邻接

[1] chatgpt: https://chatbotsplace.com/?rc=nnNWSCJ7EP91porn.me