9.25三角形最小路径和
题目:
1 | 给定一个三角形 triangle ,找出自顶向下的最小路径和。 |
示例:
1 | 输入:triangle = [[2],[3,4],[6,5,7],[4,1,8,3]] |
答案:
解法一:自上而下动态规划带备忘录:
1 | int minimumTotal(int** triangle, int triangleSize, int* triangleColSize) { |
解法二:根据奇偶划分优化存储:
1 | int minimumTotal(int** triangle, int triangleSize, int* triangleColSize) { |
9.26有效三角形个数
题目:
1 | 给定一个包含非负整数的数组 nums ,返回其中可以组成三角形三条边的三元组个数。 |
示例:
1 | 输入: nums = [2,2,3,4] |
答案:
解法一,排序+二分查找:
1 | int cmp(const void* a, const void* b) { |
优化后,解法二:双指针:
1 | int cmp(const void* a, const void* b) { |
9.27最大三角形面积
暴力枚举:
1 | double max(double a, double b) { |
9.28三角形的最大周长
题目:
1 | 给定由一些正数(代表长度)组成的数组 `nums` ,返回 *由其中三个长度组成的、**面积不为零**的三角形的最大周长* 。如果不能形成任何面积不为零的三角形,返回 `0`。 |
示例:
1 | 输入:nums = [2,1,2] |
答案:
简单的贪心
1 | int cmp(const void *pa, const void *pb) { |
9.29多边形三角形剖分的最低得分
题目:
1 | 你有一个凸的 `n` 边形,其每个顶点都有一个整数值。给定一个整数数组 `values` ,其中 `values[i]` 是第 `i` 个顶点的值(即 **顺时针顺序** )。 |
示例 :
1 | 输入:values = [1,2,3] |
题解:
区间dp
1 | // 记忆数组 |
9.30数组的三角和
标题:
1 | 给你一个下标从 0 开始的整数数组 nums ,其中 nums[i] 是 0 到 9 之间(两者都包含)的一个数字。 |
示例:
1 | 输入:nums = [1,2,3,4,5] |
答案:
组合数,
1 | class Solution: |
10.1换水问题
题目:
1 | 超市正在促销,你可以用 numExchange 个空水瓶从超市兑换一瓶水。最开始,你一共购入了 numBottles 瓶水。 |
示例:
1 |
|
题解:
简单的递归:
1 | int change(int bottlenums, int changenums,int drinknums) { |
10.2换水问题二
题目:
1 | 给你两个整数 numBottles 和 numExchange 。 |
示例:
1 | 输入:numBottles = 13, numExchange = 6 |
题解:
数学解方程
1 | int maxBottlesDrunk(int numBottles, int numExchange) { |