首页 > 编程语言 >代码随想录算法训练营第28天 | 贪心进阶

代码随想录算法训练营第28天 | 贪心进阶

时间:2024-07-30 11:50:15浏览次数:14  
标签:进阶 int 随想录 28 负数 数组 prices 翻转

2024年7月30日

题122. 买卖股票的最佳时机 II
上涨就买,下跌就不买。

class Solution {
    public int maxProfit(int[] prices) {
        int sum = 0;
        for(int i=1;i<prices.length;i++){
            sum+=prices[i]-prices[i-1]>0?prices[i]-prices[i-1]:0;
        }
        return sum;
    }
}

题1005. K 次取反后最大化的数组和
首先看有多少负数,如果大于等于K,就将K个最小的负数翻转,否则翻转所有负数。然后再来考虑K,如果数组包含0,就直接返回,如果不包含,就再看剩余翻转次数是不是偶数,如果是偶数也直接返回,否则将此时最小的正数翻转。

class Solution {
    public int largestSumAfterKNegations(int[] nums, int k) {
        //将数组排序
        //最前面的就是最大的负数,优先翻转
        Arrays.sort(nums);
        //有多少负数
        int negaNum=0;
        for(int i=0;i<nums.length;i++){
            if(nums[i]<0){
                negaNum+=1;
            }else{
                break;
            }
        }
        if(k<=negaNum){
            for(int i=0;i<k;i++){
                nums[i] = -nums[i];
            }
        }else{
            for(int i=0;i<negaNum;i++){
                nums[i] = -nums[i];
            }
            Arrays.sort(nums);
            //看有没有0
            for(int i:nums){
                if(i==0){
                    return Arrays.stream(nums).sum();
                }
            }
            //没有0就取最小的正数
            k-=negaNum;
            if(k%2==0){
                return Arrays.stream(nums).sum();
            }else{
                nums[0] = -nums[0];
            }
        }
        return Arrays.stream(nums).sum();
    }
}

标签:进阶,int,随想录,28,负数,数组,prices,翻转
From: https://www.cnblogs.com/hailicy/p/18332063

相关文章

  • 代码随想录算法训练营第27天 | 初入贪心
    2024年7月29日题455.分发饼干先排序,然后依次分发即可。classSolution{publicintfindContentChildren(int[]g,int[]s){//对于每个孩子胃口,从小到大分配,且给尽可能少的饼干Arrays.sort(g);Arrays.sort(s);intcnt=0;......
  • 代码随想录——完全平方数(Leetcode 279)
    题目链接动态规划动态规划思路:状态定义:定义一个一维数组dp,其中dp[i]表示组成整数i所需的最少完全平方数的数量。状态初始化:将dp数组中的所有元素初始化为Integer.MAX_VALUE,表示初始状态下组成每个整数的完全平方数数量是无限大(即不可能)。但dp[0]需要初始化为0,因为组成......
  • 【2024-07-28】连岳摘抄
    23:59命运总是不如人愿。但往往是在无数的痛苦中,在重重的矛盾和艰辛中才使人成熟起来。                                                 ——路遥你瞧不起你刚刚得......
  • 黑马Java零基础视频教程精华部分_9_面向对象进阶(1)
    系列文章目录文章目录系列文章目录一、static(表示静态)是Java中的一个修饰符,可以修饰成员方法,成员变量1、静态变量2、静态变量底层原理3、static静态方法4、工具类、测试类、Javabean类5、static注意事项从代码层面从内存层面6、重新认识main方法一、static(表......
  • 7.28-跑deepspeed
    完整代码:https://github.com/chenyinlin1/deepspeed_practice_example官方文档:https://www.deepspeed.ai/getting-started/Deepspeed安装:1、创建虚拟环境deepspeed:condacreate-ndeepspeedpython=3.82、cd/public/software/apps/DeepLearning/whl安装对应版本的torch,t......
  • .NET周刊【7月第4期 2024-07-28】
    国内文章.NET高性能缓冲队列实现BufferQueuehttps://mp.weixin.qq.com/s/fUhJpyPqwcmb3whuV3CDygBufferQueue是一个用.NET编写的高性能的缓冲队列实现,支持多线程并发操作。项目地址:https://github.com/eventhorizon-cli/BufferQueue项目是从mocha项目中独立出来的一......
  • 代码随想录 day39 零钱兑换 | 完全平方数 | 单词拆分
    零钱兑换零钱兑换解题思路还是完全背包的套路,但这次我们要求的是最小值,因此每次遍历的时候我们要找到最小值,每次给dp增加的大小不在是物品的价值而是长度,所以+1。知识点完全背包心得难点在于怎么样找到最小值完全平方数[完全平方数(https://programmercarl.com/0279.完......
  • 「模拟赛」暑期集训CSP提高模拟10(7.28)
    \(145pts,Rank10\),众数分。数学专题模拟赛%%%总结写前面:1.线性递推式复杂度过大考虑矩阵快速幂优化;2.T1长时间切不了就先跳,先把所有题看一遍,拿分为主。赛时记录正常开T1,期望数学题,大概读懂了,手模下小样例,模了一遍又一遍,“我并不认为样例是对的”,跳了(很正确的决定)。......
  • 02 Go语言开发REST API接口_20240728 课程笔记
    概述如果您没有Golang的基础,应该学习如下前置课程。Golang零基础入门Golang面向对象编程GoWeb基础基础不好的同学每节课的代码最好配合视频进行阅读和学习,如果基础比较扎实,则阅读本教程巩固一下相关知识点即可,遇到不会的知识点再看视频。视频课程最近发现越来越多的......
  • 【Golang 面试 - 进阶题】每日 3 题(三)
    ✍个人博客:Pandaconda-CSDN博客......