首页 > 其他分享 >贪心

贪心

时间:2023-10-17 13:12:18浏览次数:22  
标签:count arr return int height 贪心 man

贪心

1个维度【生活常识】

135. 分发糖果

class Solution {
    public boolean lemonadeChange(int[] bills) {
		int[] arr = new int[2];
		for (int bill : bills) {
			if (bill == 5){
				arr[0]++;
			}else if (bill == 10){
				if (arr[0] > 0){
					arr[0]--;
					arr[1]++;
				}else {
					return false;
				}
			}else {	//	20【fw:不会进行收集】
				if (arr[1] > 0){	//	有 10 块
					arr[1]--;
					if (arr[0] > 0){
						arr[0]--;
					}else {
						return false;
					}
				}else {	//	没有 10 块钱
					if (arr[0] >= 3){
						arr[0] -= 3;
					}else {
						return false;
					}
				}
			}
		}
		return true;
	}
}

2个维度【要分别考虑:挑选合适的】

406. 根据身高重建队列

先身高,同时 count 小的在前 ====> 保证当前坐标的前方都是比自己大于等于的 ===> 然后再去一点点微调整

class Solution {
    public int[][] reconstructQueue(int[][] people) {
		List<man> list = new ArrayList<>();
		for (int[] person : people) {
			list.add(new man(person[0], person[1]));
		}
		Collections.sort(list, (o1, o2) -> {
			if (o1.height != o2.height) {
				return o2.height - o1.height;	//	身高大的在前
			}
			return o1.count - o2.count;	//	count 小的在前
		});
		List<man> men = new ArrayList<>();
		int[][] arr = new int[people.length][2];
		for (int i = 0; i < arr.length; i++) {
			man man = list.get(i);
			if (man.count == i){
				men.add(man);
			}else {
				men.add(man.count, man);
			}
		}
		for (int i = 0; i < arr.length; i++) {
			man man = men.get(i);
			arr[i][0] = man.height;
			arr[i][1] = man.count;
		}
		return arr;
	}
}

class man{
	int height;
	int count;

	public man(int height, int count) {
		this.height = height;
		this.count = count;
	}
}

标签:count,arr,return,int,height,贪心,man
From: https://www.cnblogs.com/aclq/p/17769443.html

相关文章

  • [学习笔记]反悔贪心
    顾名思义,就是对之前的一些决策进行反悔的贪心。比如你去爬山,你爬到比之前都高的一个点,你就可以认为这是最高的山,再往上爬,爬到了一个更高点,你就可以撤回一条消息反悔,认为这个点才是最高点。接下来看几道例题,理解一下例题例题1P2949[USACO09OPEN]WorkSchedulingG显然......
  • 树上的最大权连通块:一种换根动态规划与贪心算法的结合
    树上的最大权连通块:一种换根动态规划与贪心算法的结合在计算机科学中,树是一种非常特殊的数据结构,不仅因为它们在存储数据时的效率,还因为它们提供了一种非常直观且强大的方式来解决各种问题。今天,我们将探讨一种特殊类型的问题,即在一棵树中找到一个特殊的子集或连通块,该子集中的节......
  • Slime Escape (CF D) (贪心, 双指针最大有效权值单调增长)
     补充:每次操作可以往左或者右走一步 思路:性质:以一边为重点使劲走,然后利用另外一边来给自己权值变大当这边要死了,就把这边回退到最大值,在走另一边,看另一边能到哪,这样每次都可以扩展最大值,于是利用双指针?也不是双指针,就是l,r分别贪心地向左和......
  • leetcode122买卖股票的最佳时机——贪心、动态规划
    题目描述: 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。 在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。 返回 你能获得的 最大 利润 。   示例1......
  • 反悔贪心
    前置知识:堆。反悔贪心,顾名思义,就是在朴素贪心的基础上加上【反悔】操作,做增量更新,以修正答案。反悔贪心的模板操作可以看前三道例题。例题题目备注P2949[USACO09OPEN]WorkSchedulingG存在非反悔贪心解法,本身也很板子,可以想一想iai617生存游戏同P2949CF......
  • 专题1——贪心
    P9209考虑一个贪心,首先一定总是只有一段连续段。所以答案就是这个样子了。\[\sumw_i+(n-i)\max(l_i,r_i)\]CF1661D从右往左扫一遍,要加就加最牛逼的。维护问题的二阶差分即可。P9378哦宇宙射线!贪心一下,每次让最脆弱的被轰掉。AT_abc254_h问题是相对的,然后考虑优先队列......
  • 贪心
    这玩意真的很烦,贪心题不分难度我都想不出来……也许是写的题太少了……2023.9.27P1367蚂蚁先不要管蚂蚁的编号,也就是把所有蚂蚁看成无差别的。贪心里面貌似非常喜欢无差别这个性质:因为无差别,所以A,B相遇之后掉头,其实相当于继续往前走(而且方向不变),因为蚂蚁们没有区别。然后......
  • 【POJ 3253】Fence Repair 题解(贪心算法+优先队列+哈夫曼树)
    农夫约翰想修理牧场周围的一小段围栏。他测量了围栏,发现他需要N(1≤N≤20000)块木板,每块木板都有一定的整数长度Li(1≤Li≤50000)单位。然后,他购买了一块长度刚好足以锯入N块木板的长木板(即,其长度为Li长度的总和)。FJ忽略了“切口”,即锯切时锯屑损失的额外长度;你也应该忽略它。FJ伤心地......
  • 【POJ 1521】Entropy 题解(贪心算法+优先队列+哈夫曼树)
    熵编码器是一种数据编码方法,通过对删除了“浪费”或“额外”信息的消息进行编码来实现无损数据压缩。换句话说,熵编码去除了最初不需要的信息,以准确编码消息。高度的熵意味着一条消息包含大量浪费的信息;以ASCII编码的英文文本是具有极高熵的消息类型的示例。已经压缩的消息,如JPEG图......
  • 【枚举】【贪心技巧】【集训队互测2021】子集匹配
    题目描述给定\(n,k(2k\geqn)\),二进制中有\(k\)个\(1\)的不超过\(n\)位的数有\(\binom{n}{k}\)个,有\(k-1\)个\(1\)的有\(\binomn{k-1}\)个,后者显然大于等于前者,要求对于每一个\(k\)个\(1\)的数\(x\),都找出一个\(k-1\)位的数\(y\)与之对应,且\(x......