algorithm-problem-nowcoder-64819-A
山峰序列
给定一个数组nums = [i, ..., j],如果这个数组先递增再递减,那么称这个数组为山峰序列
现在给你一个数组,需要重排这个数组,请问有多少种方法可以使重排后的数组为山峰序列
答案可能过大,所以你需要输出答案对于 998244353 的余数
示例 1:
123输入:n = 2, nums = [1,2,3]输出:4解释:[1,2,3],[1,3,2],[2,3,1],[3,2,1]
示例 2:
123输入:n = 3, nums = [3,3,3]输出:1解释:[3,3,3]
示例 3:
123输入:n = 3, nums = [1,2,1]输出:3解释:[1,1,2],[1,2,1],[2,1,1]
提示:
1 <= n <= 10^5
1 <= nums[i] <= 10^9
这个问题相当于去除所有最大数值的元素后,对于剩下的元素组成的数组,查找可以组成的数组的数量,即组合数
例如示例1,去除3后,1和2可以组成4种情况:[],[1],[2],[1,2]
可以发现,如果元素不重复,那么答案很简单,就是2^n
但是如果元素有重复那么直接查 ...
algorithm-problem-leetcode-3276
3276. 选择矩阵中单元格的最大得分
给你一个由正整数构成的二维矩阵 grid。
你需要从矩阵中选择 一个或多个 单元格,选中的单元格应满足以下条件:
所选单元格中的任意两个单元格都不会处于矩阵的 同一行。
所选单元格的值 互不相同。
你的得分为所选单元格值的总和。
返回你能获得的 最大 得分。
示例 1:
输入: grid = [[1,2,3],[4,3,2],[1,1,1]]
输出: 8
解释:
选择上图中用彩色标记的单元格,对应的值分别为 1、3 和 4 。
示例 2:
输入: grid = [[8,7,6],[8,3,2]]
输出: 15
解释:
选择上图中用彩色标记的单元格,对应的值分别为 7 和 8 。
提示:
1 <= grid.length, grid[i].length <= 10
1 <= grid[i][j] <= 100
动态规划:枚举值域,状压行号
12345678910111213141516171819202122232425262728class Solution { public int maxSc ...