【力扣周赛】第354场周赛
发布人:shili8
发布时间:2024-12-31 08:02
阅读次数:0
**力扣周赛第354场周赛**
###问题1: 最小公倍数的三元组给定三个正整数 `a`、`b` 和 `c`,请找出最小公倍数 (LCM) 为 `k` 的三元组 `(a, b, c)`。
**示例1:**
* 输入:`a =2`, `b =4`, `c =3`
* 输出:`[1,2,3]`
**示例2:**
* 输入:`a =6`, `b =5`, `c =8`
* 输出:`[2,3,4]`
**示例3:**
* 输入:`a =1`, `b =1`, `c =1`
* 输出:`[1,1,1]`
###问题2: 最大子序列和给定一个整数数组 `nums`,请找出最大子序列和。
**示例1:**
* 输入:`nums = [-2, -3,4, -1, -2,1,5, -3]`
* 输出:`7`
**示例2:**
* 输入:`nums = [1]`
* 输出:`1`
###问题3: 最大子矩阵和给定一个二维整数数组 `matrix`,请找出最大子矩阵和。
**示例1:**
* 输入:`matrix = [[1, -2,1], [4, -3,5]]`
* 输出:`7`
###问题4: 最大子序列乘积给定一个整数数组 `nums`,请找出最大子序列乘积。
**示例1:**
* 输入:`nums = [-2,0, -3]`
* 输出:`0`
##代码实现###问题1: 最小公倍数的三元组
import mathdef smallestGoodBase(n): for i in range(1, int(math.log2(n)) +1): if (n -1) % i ==0: return i
###问题2: 最大子序列和
def maxSubarraySum(nums): max_sum = float('-inf') current_sum =0 for num in nums: current_sum = max(num, current_sum + num) max_sum = max(max_sum, current_sum) return max_sum
###问题3: 最大子矩阵和
def maxSubmatrixSum(matrix): rows, cols = len(matrix), len(matrix[0]) for left in range(cols): for right in range(left +1, cols +1): current_sum = sum(matrix[i][left:right] for i in range(rows)) if current_sum > max_sum: max_sum = current_sum return max_sum
###问题4: 最大子序列乘积
def maxSubarrayProduct(nums): max_product = float('-inf') min_product = float('inf') for num in nums: if num ==0: return0 max_product = max(num, max_product * num) min_product = min(num, min_product * num) return max_product
## 总结本周赛共有四道题目,分别是最小公倍数的三元组、最大子序列和、最大子矩阵和和最大子序列乘积。通过分析每个问题,我们可以得出以下结论:
* 最小公倍数的三元组需要找到满足条件的三元组。
* 最大子序列和需要找出数组中连续元素的最大和。
* 最大子矩阵和需要找出二维数组中连续元素的最大和。
* 最大子序列乘积需要找出数组中连续元素的最大乘积。
通过使用适当的算法和数据结构,我们可以解决这些问题并得到正确答案。