代码随想录算法训练营第30天| 122.买卖股票的最佳时机II、55. 跳跃游戏、 45.跳跃游戏II、 1005.K次取反后最大化的数组和

news2024/11/28 12:56:32

122.买卖股票的最佳时机II

在这里插入图片描述

题目链接:122.买卖股票的最佳时机II
文档讲解:代码随想录
状态:so easy

思路:不用考虑操作的次数,其实只要有赚就拿下就行了。

题解:

class Solution {

   public int maxProfit(int[] prices) {
        // 初始化一个数组 dp 用于记录每一天的累计利润
        int[] dp = new int[prices.length];

        // 从第二天开始遍历价格数组
        for (int i = 1; i < prices.length; i++) {
            // 如果当天的价格比前一天高,则计算利润;否则利润为 0
            int profit = prices[i] > prices[i - 1] ? prices[i] - prices[i - 1] : 0;

            // 当天的累计利润等于前一天的累计利润加上当天的利润
            dp[i] = dp[i - 1] + profit;
        }

        // 返回在最后一天的累计最大利润
        return dp[prices.length - 1];
    }
    
}

55. 跳跃游戏

在这里插入图片描述

题目链接:55. 跳跃游戏
文档讲解:代码随想录
状态:还行

思路:贪心策略的核心思想是在遍历数组的过程中,始终维护当前能够到达的最远位置,并尽量往前跳。只要当前能够到达的最远位置始终大于等于当前位置,就说明可以到达最后一个位置。否则,就不能到达。

题解:

   public boolean canJump(int[] nums) {
        // 记录当前能够到达的最远位置
        int maxReach = nums[0];

        // 遍历数组
        for (int i = 1; i < nums.length; i++) {
            // 如果当前最远距离小于当前位置,说明无法到达当前位置,返回 false
            if (maxReach < i) {
                return false;
            }

            // 更新当前能够到达的最远位置
            maxReach = Math.max(maxReach, nums[i] + i);

            // 如果最远位置已经到达或超过最后一个位置,返回 true
            if (maxReach >= nums.length - 1) {
                return true;
            }
        }

        // 如果遍历结束后无法到达最后一个位置,返回 false
        return maxReach >= nums.length - 1;
    }

45.跳跃游戏II

在这里插入图片描述

题目链接:45.跳跃游戏II
文档讲解:代码随想录
状态:思路大差不差,代码写不出来!

思路:在每一步选择能够跳跃到最远位置的点,从而逐步向数组的末尾移动。

题解:

    public int jump(int[] nums) {
        // 记录能够到达的最远位置
        int maxReach = 0;
        // 记录当前步数的结束位置
        int end = 0;
        // 记录跳跃次数
        int res = 0;

        // 遍历数组,尝试每一步能到达的最远位置
        int i = 0;
        while (i < nums.length - 1) {
            // 更新能够到达的最远位置
            maxReach = Math.max(maxReach, nums[i] + i);

            // 如果当前步数达到了之前设定的结束位置
            if (i == end) {
                // 更新结束位置为当前能够到达的最远位置
                end = maxReach;
                // 增加跳跃次数
                res++;
            }

            // 继续遍历下一个位置
            i++;
        }

        // 返回跳跃次数
        return res;
    }

1005.K次取反后最大化的数组和

在这里插入图片描述

题目链接:1005.K次取反后最大化的数组和
文档讲解:代码随想录
状态:好烦,总是各种想漏了!

思路:当负数的个数大于等于k时,翻转所有负数,如果k还有剩余次数,则说明负数已经全部转正,此时剩余的k个数如果是偶数则自己抵消,如果是奇数就减掉2倍最小正数。

题解:

    public int largestSumAfterKNegations(int[] nums, int k) {
        // 排序,把可能有的负数排到前面
        Arrays.sort(nums);
        int sum = 0;
        for (int i = 0; i < nums.length; i++) {
            // 贪心:当负数的个数大于等于k时,翻转所有负数,如果k还有剩余次数,则说明负数已经全部转正,此时剩余的k个数如果是偶数则自己抵消,如果是奇数就减掉2倍最小正数
            if (nums[i] < 0 && k > 0) {
                nums[i] = -1 * nums[i];
                k--;
            }
            sum += nums[i];
        }
        Arrays.sort(nums);
        // 如果k没剩,那说明能转的负数都转正了,已经是最大和,返回sum
        // 如果k有剩,说明负数已经全部转正,所以如果k还剩偶数个就自己抵消掉,不用删减,如果k还剩奇数个就减掉2倍最小正数。
        return sum - (k % 2 == 0 ? 0 : 2 * nums[0]);
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1848308.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大数据经典sql

一、连续登录问题 问题&#xff1a;1&#xff09;、每个用户连续登录最大天数 2&#xff09;、连续登录大于三天的用户数 分析&#xff1a;本质都是计算用户连续登录天数 方案一&#xff1a;利用排序窗口 select a.user_id,a.date_rslt,count(1) as cnt from (select t.…

概率论与数理统计期末复习

概率论常考知识点汇总 总括 1. 基础概率论 概率定义&#xff1a;理解概率是事件发生的可能性度量&#xff0c;范围从0&#xff08;不可能&#xff09;到1&#xff08;必然发生&#xff09;。概率公理&#xff1a;掌握概率的三大公理&#xff0c;即非负性、规范性和可加性。条…

Linux【实操篇-时间日期类 用户和用户组管理】

06 【实操篇-时间日期类 用户和用户组管理】 1.时间日期类 1.1 显示当前日期 基本语法 date (功能描述:显示当前时间)date %Y(功能描述:显示当前年份)date %m(功能描述:显示当前月份)date %d (功能描述:显示当前是哪一天)date "%Y-%m-%d %H:%M:%S" (功能描述:显示…

视频监控平台功能介绍:内部设备管理(rtsp、sdk、onvif、ehome/ISUP、主动注册协议等)

一、功能概述 AS-V1000视频平台是一套集成了用户设备权限管理、视音频监控、大容量存储、电子地图的系统平台软件。它结合了现代视频技术、网络通讯技术、计算机控制技术、流媒体传输技术的综合解决方案&#xff0c;为用户提供了强大的、灵活的组网和应用能力。 AS-V1000管理端…

项目实践---Windows11中安装Zookeeper3.5.5/Hadoop2.7.2/Hive2.3.7

1.背景 项目第一版本使用大数据组件核心版本均为2.x&#xff0c;需要在个人电脑搭建相关大数据环境&#xff0c;这次提供Hadoop2.7.2 Hive2.3.7版本的环境搭建。 2.相关安装包下载 链接&#xff1a;https://pan.baidu.com/s/1tkYr1UpqMKKVJHY5cfvVSw?pwddcxd 提取码&…

基于STM32的智能插座项目

本项目基于stm32f103c8t6芯片通过集成众多模块和元器件&#xff0c;通过ESP01-S和阿里云平台实现智能插座的项目开展。资料获取到咸&#x1f41f;&#xff1a;xy591215295250 \\\或者联系wechat 号&#xff1a;comprehensivable 随着电子科学与技术的快速发展&#xff0c;软硬件…

qt 如何获取磁盘信息、QStorageInfo

以往获取qt磁盘信息&#xff0c;笔者是通过一下API转换的 BOOL GetDiskFreeSpaceExW([in, optional] LPCWSTR lpDirectoryName,[out, optional] PULARGE_INTEGER lpFreeBytesAvailableToCaller,[out, optional] PULARGE_INTEGER lpTotalNumberOfBytes,[out, optional…

10地!2024年一级造价师报名通知发布!

各位考生注意&#xff0c;西藏、四川、江西、新疆&#xff0c;辽宁、江苏、云南、新疆兵团、海南10个地区已经发布了关于2024年度一级造价工程师职业资格考试报名工作的通知&#xff1a; 浙江 辽宁 江苏 云南 报名时间&#xff1a;6月28日9:00—7月8日17:00&#xff1b; 缴费时…

spacetitanic 使用决策树分类

Spaceship Titanic | Kagglehttps://www.kaggle.com/competitions/spaceship-titanic 导入数据分析及调用接口所需库 读取csv文件数据并使用.head()查看头部信息 描述数据&#xff0c;使用.info()函数获取对象的详细信息 通过.describe()方法会生成一个统计摘要&#xff0c;并…

Linux 之内存管理 -free 和 RSS/RES的意义

一、free -h 计算关系&#xff1a; available free buff/cache total used availbleshared 参数 说明 total 总计物理内存的大小 used 已使用的物理内存的大小 free 可用物理内存有多少 shared 多个进程共享的内存总额 buff/cache 写入和读取 磁盘内存缓冲区的大小 avail…

SRM供应商管理系统是什么?企业为何都非常重视供应商管理?

企业与供应商之间的关系就像一张错综复杂的网&#xff0c;维系着生产的顺利进行。但是&#xff0c;这张网也时常让企业感到焦虑和困扰。例如&#xff0c; 如何准确地评估供应商的信誉和实力&#xff1f; 如何高效地与众多供应商沟通&#xff0c;确保信息的及时传递和反馈&…

MySQL进阶——视图

目录 1基本语法 1.1创建 1.2 查询 1.3 修改 1.4 删除 2 检查选项 2.1 级联CASCADED 2.2本地LOCAL 3 更新及作用 3.1视图的更新条件 3.2视图的作用 4视图案例 1基本语法 视图&#xff08;View&#xff09;是一种虚拟存在的表。视图中的数据并不在数据库中实际存在&…

【linux】dup文件描述符复制函数和管道详解

目录 一、文件描述符复制 1、dup函数&#xff08;复制文件描述符&#xff09; ​编辑 2、dup2函数&#xff08;复制文件描述符&#xff09; ​编辑 二、无名管道pipe 1、概述 2、无名管道的创建 3、无名管道读写的特点 4、无名管道ps -A | grep bash实现 三、有名管道FI…

下载caj viewer查看caj论文

前言 CAJ是“中国学术期刊全文数据库”&#xff08;China Academic Journals&#xff09;的英文缩写&#xff0c;同时也是“中国学术期刊全文数据库”中的一种文件格式。我们从CNKI&#xff08;中国知网&#xff09;下载的资料一般都是这种文件格式。 CAJ不同于PDF等&#xff…

Kimi还能对学术论文进行润色?我来教你!

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 一、引言 在学术界&#xff0c;论文的质量往往决定了研究的可信度和影响力。Kimi作为一款人工智能助手&#xff0c;可以为学术论文的润色提供有效的帮助。本文将详细介绍如何利用Kimi进…

面向对象进阶--抽象(Java 抽象)详解

1.1 抽象类引入 父类中的方法&#xff0c;被它的子类们重写&#xff0c;子类各自的实现都不尽相同。那么父类的方法声明和方法主体&#xff0c;只有声明还有意义&#xff0c;而方法主体则没有存在的意义了(因为子类对象会调用自己重写的方法)。换句话说&#xff0c;父类可能知道…

复盘最近的面试

这个礼拜一直在面试&#xff0c;想着看看能否拿到不错的offer前去实习&#xff0c;从周一到周四&#xff0c;面了将近10家&#xff0c;特整理此份面经&#xff0c;希望对秋招的各位有所帮助 A公司 一面 面试官人很好&#xff0c;我回答的时候不会他会笑笑然后提醒我 自我介绍~…

VMware安装及创建虚拟机

安装完成后&#xff0c;点击创建新的虚拟机 操作完成后就安装成功啦 &#xff0c;下个教程出虚拟机Linux和xshell的连接及可能出现的问题解决方案

Elasticsearch:倒数排序融合 - Reciprocal rank fusion - 8.14

警告&#xff1a;此功能处于技术预览阶段&#xff0c;可能会在未来版本中更改或删除。语法可能会在正式发布之前发生变化。Elastic 将努力修复任何问题&#xff0c;但技术预览中的功能不受官方正式发布功能的支持 SLA 约束。 倒数排序融合 (reciprocal rank fusion - RRF) 是一…

QTday5 2024-06-19

作业要求&#xff1a; 1.思维导图 2.整理代码&#xff1a;TCP服务器 作业1&#xff1a;思维导图 作业2&#xff1a;整理代码 运行代码&#xff1a; widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> #include <QList>…