算法奇妙屋(三十九)-贪心算法学习之路 6
·
文章目录
一. 力扣 455. 分发饼干
1. 题目解析
饼干s[j] >= 胃口g[i]时, ret++, 求最后ret的最大值
2. 算法原理
3. 代码
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. 代码
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();
}
}
更多推荐







所有评论(0)