DAY34——贪心part3

news2024/11/19 20:32:53

1.

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.

 代码随想录 (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.

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;
    }
}

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

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

相关文章

8.12 IP协议与ethernet协议

目录 IP协议作用和意义 计算机网络体系结构 网络互联使用路由器 IP网的意义 分组在互联网中的传送 分组传输路径 ​编辑 IP 数据报首部格式 IP数据报的格式 IP数据报首部的固定部分中的各字段 IP 数据报分片 IP数据报首部中的协议 以太网协议 IP协议作用和意义 数…

13年测试老鸟经验,性能测试-性能调优各个方法详细,一篇通透...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 WebServer服务优化…

数学建模算法(基于matlab和python)之 变步长求积公式与龙贝格算法(3/10)

实验目的及要求&#xff1a; 深刻认识数值积分法的意义&#xff1b;明确数值积分精度与步长的关系&#xff1b;根据定积分的计算方法&#xff0c;可以考虑二重积分的计算问题。 实验内容&#xff1a; 1、利用quad函数作变步长方法计算定积分的近似值&#xff0c;计算精度为。 …

Axure制作一个滑动验证组件

一、案例效果 1、默认显示滑块、背景及提示文案&#xff1b; 2、滑块仅允许向右水平拖动&#xff0c;且不能超过背景区域&#xff1b; 3、滑块移动过程中&#xff0c;左侧区域样式跟随变化&#xff0c;右侧区域保持不变&#xff1b; 4、滑块为未拖动到最右侧时释放&#xff…

射频功率放大器——如何选择合适的射频功率放大器

射频功率放大器是一种用于增强射频信号的电子设备。在选择合适的射频功率放大器时&#xff0c;需要考虑多个因素&#xff0c;包括应用场景、频率范围、增益、带宽、噪声等。下面是一些关于如何选择合适的射频功率放大器的基本步骤&#xff1a; 1、确定应用场景和需求&#xff1…

CANoe使用记录(五):CANoe 如何调用诊断功能/ZCANPRO的诊断功能

目录 1、概述 2、Canoe调用诊断服务 2.1、查看是否存在license 2.2、新建工程步骤分解 3、ZCANPRO的诊断功能 1、概述 有那么一部分时候&#xff0c;需要通过Canoe来实现简单的诊断服务&#xff0c;当然大部分时候通过Canoe进行测试需要通过CAPL脚本实现复杂的UDS诊断服务。…

Unity WebAR插件记录

1.Imagine WebAR - World Tracker&#xff08;Unity商店&#xff09; 使用此插件为Web浏览器创建增强现实体验。借助出色的6DOF跟踪功能&#xff0c;将游戏对象固定在地板或任何表面上。支持所有主流的手机浏览器。 2.Imagine WebAR - Image Tracker&#xff08;Unity商店&…

JavaScript ES8新特性

文章目录 导文异步函数&#xff08;Async/Await&#xff09;&#xff1a;Object.getOwnPropertyDescriptors()方法&#xff1a;字符串填充方法&#xff08;String padding&#xff09;&#xff1a;共享内存与原子操作&#xff08;Shared Memory and Atomics&#xff09;&#x…

基于原生 js 实现今日新闻网站

完整资料进入【数字空间】查看——baidu搜索"writebug" 一、今日新闻网站设计报告 1.1 1 设计思路 该网站设计大部分都是基于原生 js 实现。基本思想为首先将基本的页面架构包括 header&#xff0c;导航条写好。之后根据后台 PHP 请求接口请求返回 JSON 格式数据后…

【Java核心技术】Java基本语法

Java基本语法 1、关键字与保留字关键字的定义和特点保留字的定义 2、标识符标识符的定义定义合法标识符规则Java中的名称命名规范 3、变量变量的概念变量的作用使用变量注意变量的分类整数变量&#xff1a;byte、short、int、long浮点类型&#xff1a;float、double字符类型&am…

Vue组件间通信的几种方式

Vue组件间通信的几种方式 0、前言1、props/$emit&#xff08;父子&#xff09;2、ref / $refs&#xff08;父子&#xff09;3、provide / inject&#xff08;深度父子&#xff09;4、EventBus 事件总线 &#xff08;任意两个组件通讯&#xff09;5、$attrs / $listener&#xf…

逻辑回归(Logistics Regression)的原理及实现

1.逻辑回归&#xff08;Logistics Regression&#xff09;的原理及实现 笔记来源于《白话机器学习的数学》 逻辑回归用于解决二分类问题 1.1 逻辑回归的原理 1.1.1 Sigmoid函数 sigmoid函数在神经网络中如何起作用&#xff1f;详见本人笔记&#xff1a;机器学习和AI底层逻辑 …

Spreadjs 16.1.3 + GcExcel 6.1.2 操作EXCEL好轻松-Crack

全球销量第一的 JavaScript 电子表格&#xff0c;包含 500 多个 Excel 函数 快速提供真正类似 Excel 的电子表格体验 - 对 Excel 零依赖。创建金融应用程序&#xff0c;仪表板,图表,数据透视表,性能基准,科学实验室笔记本&#xff0c;以及其他类似的 JavaScript 电子表格应用程…

Spring拦截器实现鉴权

什么是拦截器&#xff1f; 拦截器&#xff08;Interceptor&#xff09;类似于Servlet中的过滤器&#xff0c;主要用于拦截用户请求并做出相应的处理&#xff0c;例如拦截器可以进行权限验证、记录请求信息的日志、判断用户是否登录等。拦截器允许自定义预处理(Pre-Processing)…

Axure教程——滑屏效果

本文介绍用Axure来做一个移动端引导页的滑屏效果。 效果预览 预览地址&#xff1a;https://dsn3d3.axshare.com 制作元件 1、所需元件 矩形 动态面板 2、制作过程 拖入一个动态面板元件&#xff0c;命名为“”切换&#xff0c;大小设置为375667&#xff0c;如图&#xff1a; …

租房小程序源码推荐,让你的租房平台更有竞争力

为租房平台的从业者&#xff0c;你是否也曾为如何提高平台的竞争力而苦恼&#xff1f;租房小程序源码或许是一个不错的选择。 租房小程序源码是一种可以让你快速搭建一个专属的租房平台的工具&#xff0c;可以帮助你快速上线一个符合市场需求的租房平台。相较于从头开始开发一…

关于项目初期,数据量小的内容推荐的实现方法

前言 当下&#xff0c;只要是一个初具规模的内容应用都具备个性化推荐系统。比如购物类的会有推荐商品模块&#xff0c;搜索条下有个性化的搜索关键词或词条补全词&#xff0c;社交类的有博主推荐&#xff0c;视频或文章推荐等等。这些功能除了要有庞大的数据量&#xff0c;还要…

如何使用《水经注地图服务》快速发布TIF数据

《水经注地图服务》的快速发布功能是一个能够帮助用户实现快速发布地图服务的功能&#xff0c;并且提供常规情况下大多数用户所需的默认配置&#xff0c;让用户在发布地图时更加便捷。 今天为大家分享如何使用《水经注地图服务》快速发布TIF地图数据。 准备工作 离线示例数据…

navicat导入sql数据流程Database Navigator插件操作数据库

导入数据库流程&#xff1a; 选中localhost_3306&#xff0c;新建数据库 ->输入数据库名community ->选中community&#xff0c;新建查询 ->输入&#xff08;粘贴&#xff09;数据信息即可 Database Navigator插件操作数据库 IDEA插件系列&#xff08;6&#xff…

小研究 - Java 指针分析综述(一)

近年来静态程序分析已成为保障软件可靠性、安全性和高效性的关键技术之一. 指针分析作为基 础程序分析技术为静态程序分析提供关于程序的一系列基础信息&#xff0c;例如程序任意变量的指向关系、变量 间的别名关系、程序调用图、堆对象的可达性等. 介绍了 Java 指针分析的重要…