1262. 可被三整除的最大和

1262. 可被三整除的最大和

  • 原题链接:
  • 完成情况:
  • 解题思路:
    • 方法一:贪心 + 正向思维
    • 方法二:贪心 + 逆向思维
  • 参考代码:
    • 方法一:贪心 + 正向思维
    • 方法二:贪心 + 逆向思维

原题链接:

1262. 可被三整除的最大和

https://leetcode.cn/problems/greatest-sum-divisible-by-three/description/

完成情况:

在这里插入图片描述

在这里插入图片描述

解题思路:

方法一:贪心 + 正向思维

在这里插入图片描述

方法二:贪心 + 逆向思维

在这里插入图片描述

参考代码:

方法一:贪心 + 正向思维

package LeetCode中等题;import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;public class __1262可被三整除的最大和__贪心_余数分组配对 {public static void main(String[] args) {int nums[] = {3,6,5,1,8};maxSumDivThree(nums);}/**** @param nums* @return*/public static int maxSumDivThree(int[] nums) {//用v_remind[i]来表示余数List<Integer> v_remind [] = new List[3];for (int i=0;i<3;i++){v_remind[i] = new ArrayList<Integer>();}//按余数值进行分组for (int num : nums){v_remind[num % 3].add(num);}Collections.sort(v_remind[1],(a,b)-> b-a);  //自定义Collecctions类的v_remind[1]排序规则Collections.sort(v_remind[2],(a,b)-> b-a);  //自定义Collecctions类的v_remind[2]排序规则int ans = 0;int lb = v_remind[1].size(),lc = v_remind[2].size();//每一个v_remind[1]和一个v_remind[2],都可以进行匹配为一组//因此,我应该是放任所有的v_remind[0]不去管//然后大小排序好1,2.。。。。。。。//然后每一组1,2就从大到小区合并//同时不能让他们某一组多余值大于%3的余数,因为任何数得余数都一个除以3for(int countB = lb-2;countB <= lb;countB++){if (countB >= 0){for (int countC = lc-2;countC<= lc;countC++){if (countC >=0 && (countB - countC)%3 == 0){ans = Math.max(ans,getSum(v_remind[1],0,countB)+getSum(v_remind[2],0,countC));}}}}return ans+getSum(v_remind[0],0,v_remind[0].size());}/**** @param listRemind* @param start* @param end* @return*/private static int getSum(List<Integer> listRemind, int start, int end) {int sum = 0;for (int i = start;i<end;i++){sum += listRemind.get(i);}return sum;}
}

方法二:贪心 + 逆向思维

package LeetCode中等题;import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;public class __1262可被三整除的最大和__贪心_先取所有的数再按余数对应去除 {/**** @param nums* @return*/public int maxSumDivThree(int[] nums) {//用v_remind[i]来表示余数// 使用 v[0], v[1], v[2] 分别表示 a, b, cList<Integer> v_remind[] = new List[3];for (int i=0;i<3;i++){v_remind[i] = new ArrayList<Integer>();}//按余数值进行分组for (int num : nums){v_remind[num % 3].add(num);}Collections.sort(v_remind[1],(a, b)-> b-a);  //自定义Collecctions类的v_remind[1]排序规则Collections.sort(v_remind[2],(a,b)-> b-a);  //自定义Collecctions类的v_remind[2]排序规则int total = Arrays.stream(nums).sum();int remove = Integer.MAX_VALUE;if (total % 3 == 0){remove = 0;} else if (total % 3 == 1) {if (v_remind[1].size() >= 1){remove = Math.min(remove,v_remind[1].get(v_remind[1].size() - 1));}if (v_remind[2].size() >= 2){remove = Math.min(remove,v_remind[2].get(v_remind[2].size() - 2) + v_remind[2].get(v_remind[2].size() - 1) );}}else {if (v_remind[1].size() >= 2){remove = Math.min(remove,v_remind[1].get(v_remind[1].size() - 2)+v_remind[1].get(v_remind[1].size() - 1));}if (v_remind[2].size() >= 1){remove = Math.min(remove,v_remind[2].get(v_remind[2].size() - 1));}}return total - remove;}
}

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

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

相关文章

python 通过open api 接口 连续问答gpt

1 第一次提问 response openai.ChatCompletion.create(modelmodel_name,messages[{"role": "system", "content": "精通python的专家"}, # 设定机器角色{"role": "user", "content": "我想学习p…

机器人制作开源方案 | 随叫随到的智能垃圾桶

作者&#xff1a;卢智浩 尹宗岱 胡文珺 付文智 陈星 单位&#xff1a;江汉大学 指导老师&#xff1a;侍中楼 李巍 本作品围绕探索者场景和应用主题&#xff0c;基于当今时代“智能家”的快速发展&#xff0c;智慧生活成为未来的一大发展趋势&#xff0c;因此我们设计了此款可…

NPDP是什么证书?含金量高吗?

NPDP是在2016年引进国内的,也才几年时间,所以大多数人对NPDP并不是很了解,换个称呼&#xff0c;也就是产品经理&#xff0c;很多人就了解了。 产品经理这一职业现在是非常火热&#xff0c;有着丰厚的薪资、较为舒适的办公环境、并不高的入职门槛,而且实际上各类学校中并没有产…

【刷题】蓝桥杯

蓝桥杯2023年第十四届省赛真题-平方差 - C语言网 (dotcpp.com) 初步想法&#xff0c;x y2 − z2&#xff08;yz)(y-z) 即xa*b&#xff0c;ayz&#xff0c;by-z 2yab 即ab是2的倍数就好了。 即x存在两个因数之和为偶数就能满足条件。 但时间是&#xff08;r-l&#xff09;*x&am…

【深度学习实验】线性模型(二):使用NumPy实现线性模型:梯度下降法

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入库 1. 初始化参数 2. 线性模型 linear_model 3. 损失函数loss_function 4. 梯度计算函数compute_gradients 5. 梯度下降函数gradient_descent 6. 调用函数 一、实验介绍 使用Nu…

只需4步使用Redis缓存优化Node.js应用

介绍 通过API获取数据时&#xff0c;会向服务器发出网络请求&#xff0c;收到响应数据。但是&#xff0c;此过程可能非常耗时&#xff0c;并且可能会导致程序响应时间变慢。 我们使用缓存来解决这个问题&#xff0c;客户端程序首先向API发送请求&#xff0c;将返回的数据存储…

文档丢失怎么找回?学会这3个方法就足够!

场景1&#xff1a;“不是吧&#xff01;我辛辛苦苦写的文档好像忘记保存就退出了&#xff01;谁能救救我&#xff01;帮我找回丢失的文档&#xff1f;” 场景2&#xff1a;“电脑里的文档太多了&#xff0c;每次在清理时都容易误删。有什么方法可以找回我丢失的文档吗&#xff…

成集云 | 用友T+集成聚水潭ERP(用友T+主管库存)| 解决方案

源系统成集云目标系统 方案介绍 用友T是一款由用友畅捷通推出的新型互联网企业管理系统&#xff0c;它主要满足成长型小微企业对其灵活业务流程的管控需求&#xff0c;并重点解决往来业务管理、订单跟踪、资金、库存等管理难题。 聚水潭是一款以SaaS ERP为核心&#xff0c;集…

HandleErrorAttribute 是 ASP.NET MVC 中的一个特性(attribute),用于全局处理控制器中的异常

它允许开发者在发生异常时&#xff0c;自定义异常的处理方式。 在 ASP.NET MVC 中&#xff0c;当控制器中的某个方法抛出异常时&#xff0c;HandleErrorAttribute 可以捕获这个异常&#xff0c;并执行相应的处理逻辑。这可以确保应用程序在发生异常时&#xff0c;不会突然中断…

嵌入式笔试面试刷题(day15)

文章目录 前言一、Linux中的主设备号和次设备号1.查看方法2.主设备号和次设备号的作用 二、软件IIC和硬件IIC的区别三、变量的声明和定义区别四、static在C和C中的区别五、串口总线空闲时候的电平状态总结 前言 本篇文章继续讲解嵌入式笔试面试刷题&#xff0c;希望大家坚持跟…

Mybatis——ORM 映射规范与原理

摘要 本博文主要介绍的阿里巴巴java开发规范&#xff0c;帮助大家在日常的开发中的更好使用ORM 映射实战。 一、ORM映射规范 1.1 在表查询中&#xff0c;一律不要使用 * 作为查询的字段列表&#xff0c;需要哪些字段必须明确写明。 增加查询分析器解析成本。增减字段容易与…

pgzrun 拼图游戏制作过程详解(10)

10. 拼图游戏继续升级——多关卡拼图 初始化列表Photos用来储存拼图文件名&#xff0c;Photo_ID用来统计当下是第几张拼图&#xff0c;Squares储存当下拼图的24张小拼图的文件名&#xff0c;Gird储存当下窗口上显示的24个小拼图及坐标。 Photos["girl_","boy_…

基于Java+SpringBoot+Vue+Element的OA系统的设计和实现

基于JavaSpringBootVueElement的OA系统的设计和实现 源码传送入口前言主要技术系统设计功能截图数据库设计代码论文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码传送入口 前言 在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的…

Linux- inode vnode

什么是inode inode 是 UNIX 和 UNIX-like 操作系统中的一个关键概念。它代表了文件系统中文件或目录的元数据。每个文件和目录在文件系统中都有一个与之关联的 inode。这个数据结构存储了关于文件的所有信息&#xff0c;除了其名称和实际数据之外。 以下是 inode 中通常包含的…

AI写作工具,智能ai写作工具

在信息化时代&#xff0c;内容创作已经成为了许多行业的核心。从营销广告到新闻报道&#xff0c;从博客文章到学术论文&#xff0c;人们需要不断地产生高质量的文字内容。创作是一项耗时耗力的工作&#xff0c;需要丰富的知识和创造性思维。 AI写作工具&#xff0c;是一类基于人…

基于Spring Boot的医院预约挂号系统设计与实现

前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb;…

SAP ABAP基础知识 访问外部数据库-开发篇

前言 本文主要介绍通过ABAP语言访问外部数据库的几种方式 一、外部数据库配置 本文示例中的代码访问了两个外部数据库 MTD : 外部oracle数据库,其中示例表 ZTTEMP 字段( ZZTNO,WERKS) S4Q : 外部HANA数据库(开发系统访问测试系统的数据库), 使用表USR02,ZTTEMP 二、ABAP访问…

Flink Table 数据类型 及Stream转Table实战 和 Flink假(模拟、mock)数据生成工具

列举的flink Table API的数据类型。并生成与这些类型匹配的数据。 同时比较了DataType或LoglicalType默认conversionClass与Flink Table API中规定的内部类型的conversionClass的异同。 一、添加maven pom依赖 用于生成假数据。 <dependency><groupId>net.datafa…

IDEA(2023)解决运行乱码问题

&#x1f607;作者介绍&#xff1a;一个有梦想、有理想、有目标的&#xff0c;且渴望能够学有所成的追梦人。 &#x1f386;学习格言&#xff1a;不读书的人,思想就会停止。——狄德罗 ⛪️个人主页&#xff1a;进入博主主页 &#x1f5fc;专栏系列&#xff1a;无 &#x1f33c…

【计算机组成原理】读书笔记第三期:内存和磁盘的关系

目录 写在开头 内存与磁盘的关系 基本关系 磁盘缓存 虚拟内存 节约内存的编程方法 通过DLL文件实现函数共有 通过调用_stdcall来降低文件程序的大小 磁盘的物理结构 结尾 写在开头 本文继续阅读总结《程序是怎样跑起来的》这本书&#xff08;作者&#xff1a;矢泽…