文章目录
- [一. 力扣 [455. 分发饼干](https://leetcode.cn/problems/assign-cookies/description/)](#一. 力扣 455. 分发饼干)
-
- [1. 题目解析](#1. 题目解析)
- [2. 算法原理](#2. 算法原理)
- [3. 代码](#3. 代码)
- [二. 力扣 [553. 最优除法](https://leetcode.cn/problems/optimal-division/description/)](#二. 力扣 553. 最优除法)
-
- [1. 题目解析](#1. 题目解析)
- [2. 算法原理](#2. 算法原理)
- [3. 代码](#3. 代码)
一. 力扣 455. 分发饼干
1. 题目解析
饼干s[j] >= 胃口g[i]时, ret++, 求最后ret的最大值
2. 算法原理
3. 代码
java
class Solution {
public int findContentChildren(int[] g, int[] s) {
Arrays.sort(g);
Arrays.sort(s);
int i = 0, j = 0, m = g.length, n = s.length, ret = 0;
while (i < m && j < n) {
if (s[j] >= g[i]) {
j++;
i++;
ret++;
}else {
j++;
}
}
return ret;
}
}
二. 力扣 553. 最优除法
1. 题目解析
让我们任意添加括号, 来求最大值
2. 算法原理
题目中nums[i] >= 2, 很关键, 意味着我们可以使用分子最大值的情况, 任意两个数相乘绝对大于原值
3. 代码
java
class Solution {
public String optimalDivision(int[] nums) {
int n = nums.length;
StringBuilder ret = new StringBuilder();
ret.append(nums[0]);
if (n == 1) {
return ret.toString();
}else if (n == 2) {
ret.append("/");
ret.append(nums[1]);
return ret.toString();
}
for (int i = 1; i < n; i++) {
ret.append("/");
if (i == 1) {
ret.append("(");
}
ret.append(nums[i]);
if (i == n - 1) {
ret.append(")");
}
}
return ret.toString();
}
}




