LeetCode455. 分发饼干 采用贪心算法(附有详细解析 JAVA实现)

题目描述
LeetCode455. 分发饼干 采用贪心算法(附有详细解析 JAVA实现)_第1张图片

LeetCode455. 分发饼干 采用贪心算法(附有详细解析 JAVA实现)_第2张图片
什么是贪心算法

贪心算法(Greedy algorithm),又称贪婪算法。是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而使得问题得到全局最优解。贪心的算法的设计就是要遵循某种规则,不断地选取当前最优解的算法设计方法。

题目分析

  1. 先将两个数组排序
  2. 用最小尺寸的饼干与最小胃口的小孩比
  3. 如果能满足小孩的胃口则同时访问下一个小孩和下一个饼干并且结果加1
  4. 如果满足不了小孩的胃口,那么 用下一个饼干的尺寸与当前小孩的胃口作比较,以此类推。

代码实现

class Solution {
		public int findContentChildren(int[] g, int[] s) {
			// 先将小孩胃口数组和饼干尺寸数组进行排序
			Arrays.sort(g);
			Arrays.sort(s);

			// 获取数组长度,在循环时使用
			int gLength = g.length;
			int sLength = s.length;

			// 定义一个变量存储结果个数
			int res = 0;

			// 循环直到遍历完最后一个小孩或者最后一个饼干
			for (int i = 0, j = 0; i < gLength && j < sLength; j++, i++) {
				// 寻找第一个大于当前小孩的胃口的饼干尺寸
				while (j < sLength && g[i] > s[j]) {
					j++;
				}

				if (j < sLength) {
					res++;
				}
			}

			return res;

		}
	}

运行结果
LeetCode455. 分发饼干 采用贪心算法(附有详细解析 JAVA实现)_第3张图片

你可能感兴趣的:(蓝桥杯,Java学习,贪心算法,算法,贪心算法,java)