DAY34——贪心part3

这篇具有很好参考价值的文章主要介绍了DAY34——贪心part3。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.

DAY34——贪心part3

class Solution {
    public int largestSumAfterKNegations(int[] nums, int K) {
    	// 将数组按照绝对值大小从大到小排序,注意要按照绝对值的大小
	nums = IntStream.of(nums)
		     .boxed()
		     .sorted((o1, o2) -> Math.abs(o2) - Math.abs(o1))
		     .mapToInt(Integer::intValue).toArray();
	int len = nums.length;	    
	for (int i = 0; i < len; i++) {
	    //从前向后遍历,遇到负数将其变为正数,同时K--
	    if (nums[i] < 0 && K > 0) {
	    	nums[i] = -nums[i];
	    	K--;
	    }
	}
	// 如果K还大于0,那么反复转变数值最小的元素,将K用完

	if (K % 2 == 1) nums[len - 1] = -nums[len - 1];
	return Arrays.stream(nums).sum();

    }
}

2.DAY34——贪心part3

 代码随想录 (programmercarl.com)

class Solution {
    public int canCompleteCircuit(int[] gas, int[] cost) {
        int curSum = 0;
        int totalSum = 0;
        int index = 0;
        for (int i = 0; i < gas.length; i++) {
            curSum += gas[i] - cost[i];
            totalSum += gas[i] - cost[i];
            if (curSum < 0) {   //负数情况,只能从i+1开始
                index = (i + 1) % gas.length ; 
                curSum = 0;
            }
        }
        if (totalSum < 0) return -1;  //总和小于0,一定不符合
        return index;
    }
}

 3.

DAY34——贪心part3文章来源地址https://www.toymoban.com/news/detail-505102.html

class Solution {
    /**
         分两个阶段
         1、起点下标1 从左往右,只要 右边 比 左边 大,右边的糖果=左边 + 1
         2、起点下标 ratings.length - 2 从右往左, 只要左边 比 右边 大,此时 左边的糖果应该 取本身的糖果数(符合比它左边大) 和 右边糖果数 + 1 二者的最大值,这样才符合 它比它左边的大,也比它右边大
    */
    public int candy(int[] ratings) {
        int len = ratings.length;
        int[] candyVec = new int[len];
        candyVec[0] = 1;
        for (int i = 1; i < len; i++) {  //从左往右遍历
            candyVec[i] = (ratings[i] > ratings[i - 1]) ? candyVec[i - 1] + 1 : 1;
        }

        for (int i = len - 2; i >= 0; i--) {  //从右往左遍历
            if (ratings[i] > ratings[i + 1]) {
                candyVec[i] = Math.max(candyVec[i], candyVec[i + 1] + 1);
            }
        }

        int ans = 0;
        for (int num : candyVec) {
            ans += num;
        }
        return ans;
    }
}

到了这里,关于DAY34——贪心part3的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • day 34 贪心算法

    1005.K次取反后最大化的数组和 第一步:将数组按照绝对值大小从大到小排序,注意要按照绝对值的大小 第二步:从前向后遍历,遇到负数将其变为正数,同时K– 第三步:如果K还大于0,那么反复转变数值最小的元素,将K用完 第四步:求和 134. 加油站 暴力求解, 从每一个位

    2024年02月11日
    浏览(34)
  • Day29- 贪心算法part03

    题目一:1005. K 次取反后最大化的数组和 1005. K 次取反后最大化的数组和 给你一个整数数组  nums  和一个整数  k  ,按以下方法修改该数组: 选择某个下标  i  并将  nums[i]  替换为  -nums[i]  。 重复这个过程恰好  k  次。可以多次选择同一个下标  i  。 以这种方式修改

    2024年01月20日
    浏览(45)
  • Day27- 贪心算法part01

    题目一:455. 分发饼干 455. 分发饼干 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子  i ,都有一个胃口值  g[i] ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干  j ,都有一个尺寸  s[j]  。如果  s

    2024年01月18日
    浏览(38)
  • Day32- 贪心算法part06

    题目一:738. 单调递增的数字  738. 单调递增的数字 当且仅当每个相邻位数上的数字  x  和  y  满足  x = y  时,我们称这个整数是 单调递增 的。 给定一个整数  n  ,返回  小于或等于  n  的最大数字,且数字呈  单调递增  。 从高位到低位遍历整数 n 的每一位数字,当

    2024年01月22日
    浏览(46)
  • Day31- 贪心算法part05

    题目一:453. 无重叠区间  435. 无重叠区间 给定一个区间的集合  intervals  ,其中  intervals[i] = [starti, endi]  。返回  需要移除区间的最小数量,使剩余区间互不重叠  。 主要思想是优先保留结束时间早的区间,这样留给其他区间的空间就更多,从而减少需要移除的区间数量

    2024年01月19日
    浏览(43)
  • Day37 贪心算法part06

    前面都想到了,结果最后n[i]给写错了直接写成9了,得把后面的全都改成9才行 摄像头的覆盖范围是上中下 遇到叶子结点,放到叶子结点的父节点 每隔两个空节点放一个摄像头 所以要用后序遍历 把结点分为三个状态:0无覆盖1有摄像头2有覆盖 空节点要设置为有覆盖的状态

    2024年02月19日
    浏览(45)
  • Day36 贪心算法 part05

    一个字母区间仅有几个字母 前一个字母区间有的字母后面都没有 天才举一反三写出来了

    2024年02月19日
    浏览(58)
  • Day32 贪心算法part02

    太牛了我,随随便便双指针秒杀 md题解里面双指针都没用直接for循环秒杀 写成这样纯粹是没有看到第一次跳跃必须从第一个开始

    2024年02月20日
    浏览(40)
  • Day28- 贪心算法part02

    题目一:122. 买卖股票的最佳时机II 122. 买卖股票的最佳时机 II 给你一个整数数组  prices  ,其中  prices[i]  表示某支股票第  i  天的价格。 在每一天,你可以决定是否购买和/或出售股票。你在任何时候  最多  只能持有  一股  股票。你也可以先购买,然后在  同一天  

    2024年01月15日
    浏览(47)
  • Day30- 贪心算法part04

    题目一:860. 柠檬水找零  860. 柠檬水找零 在柠檬水摊上,每一杯柠檬水的售价为  5  美元。顾客排队购买你的产品,(按账单  bills  支付的顺序)一次购买一杯。 每位顾客只买一杯柠檬水,然后向你付  5  美元、 10  美元或  20  美元。你必须给每个顾客正确找零,也就

    2024年01月19日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包