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.rhkb.cn/news/136845.html

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

相关文章

实践分享:vue模块化基本用法

首先还是来看看什么是模块化。 常见的概括&#xff1a;模块化就是把单独的一个功能封装到一个模块&#xff08;文件&#xff09;中&#xff0c;模块之间相互隔离&#xff0c;但是可以通过特定的接口公开内部成员&#xff0c;也可以依赖别的模块&#xff08;方便代码的重用&…

嵌入式网络接口之MAC芯片与PHY芯片

目录 0. 参考文档 1.嵌入式网络接口简介 2.嵌入式网络硬件架构方案 2.1 SOC内未集成MAC芯片 2.2 SOC内集成MAC芯片 2.3 主流方案总结 2.3 参照实际网卡的说明 3.MII/RMII及MDIO接口 3.1 MII 3.2 RMII 3.3 MDIO 0. 参考文档 网卡构造&#xff1a;MAC与PHY的关系&…

从源码角度解读xxl-job的工作流程

剖析xxl-job的源码——了解其实现细节与优化策略 设计思想&#x1f9e0;服务端-源码探究 &#x1f50d;1. 初始化触发器线程池2. 维护注册信息3. 运行失败监视器4. 将丢失主机信息调度日志更改状态5. 统计一些失败成功报表,删除过期日志6. 执行调度器[核心] 客户端-源码探究&am…

保研复习-计算机组成原理

计算机组成原理 计算机组成冯诺依曼体系结构计算机系统的层次结构计算机的五大组成部件编译和解释的区别 CPUCPU的组成寄存器的类型指令类型指令功能指令执行过程 存储器存储器的层次结构寻址方式 输入和输出io方式有哪几种IO接口的基本结构 计算机组成 冯诺依曼体系结构 存储…

从CNN(卷积神经网络),又名CAM获取热图

一、说明 卷积神经网络&#xff08;CNN&#xff09;令人难以置信。如果你想知道它如何看待世界&#xff08;图像&#xff09;&#xff0c;有一种方法是可视化它。 这个想法是&#xff0c;我们从最后的密集层中得到权重&#xff0c;然后乘以最终的CNN层。这需要全局平均…

每日一题~二叉搜索树中的插入操作

题目链接&#xff1a;701. 二叉搜索树中的插入操作 - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; 思路分析&#xff1a;由题可知&#xff0c;题目的要求是给我们一个二叉搜索树和一个 val&#xff0c;将这个 val 插入到二叉搜索树中&#xff0c;并且这个树仍…

八、实时时钟

八、实时时钟 简介时钟芯片模块代码可调时钟 简介 引脚定义和应用电路 我们的开发板没有备用电池 寄存器定义 时序定义 在时钟的上升沿&#xff0c;IO口的数据被写入到芯片中&#xff0c;在下降沿&#xff0c;芯片就会将数据输出。如果是写入&#xff0c;那么在整个过程中&…

数据优化与可视化:3D开发工具HOOPS在BIM模型轻量化中的作用分析

在建筑和工程领域&#xff0c;BIM&#xff08;建筑信息建模&#xff09;是一种重要的数字化工具&#xff0c;但大型BIM模型往往需要大量的计算资源和存储空间。为了解决这一问题&#xff0c;HOOPS技术成为了一种关键工具&#xff0c;可以帮助实现BIM模型轻量化&#xff0c;提高…

面试题三:请你谈一谈Vue中的filter功能的实现

Vue中过滤器(filter)的使用 我们想一下有methods为什么要有filter的存在呢&#xff0c;因为filter的实现效率比methods要高的多。 看一下官方定义&#xff1a; Vue.js 允许你自定义过滤器&#xff0c;可被用于一些常见的文本格式化。过滤器可以用在两个地方&#xff1a;双花括号…

【完美解决】GitHub连接超时问题 Recv failure: Connection was reset

问题&#xff1a; 已经开了梯子但是在Idea中使用git&#xff08;GitHub&#xff09;还是连接超时Recv failure: Connection was reset。此时需要让git走代理。 解决方案&#xff1a; 1.对右下角网络点击右键 -> 打开网络和Internet设置 2.代理 -> 查看到地址和端口号…

论文阅读之Learning and Generalization of Motor Skills by Learning from Demonstration

论文阅读其实就是用自己的话讲一遍&#xff0c;然后理解其中的方法 0、论文基本信息 为什么阅读此篇论文&#xff1a;因为它是DMP经典论文&#xff0c;被引多次&#xff0c;学史可以明智&#xff0c;了解最初机理。 论文题目&#xff1a;Learning and Generalization of Moto…

广东白云学院《乡村振兴战略下传统村落文化旅游设计》许少辉八一著作——2023学生开学季辉少许

广东白云学院《乡村振兴战略下传统村落文化旅游设计》许少辉八一著作——2023学生开学季辉少许

手机机型响应式设置2

window.screen.height&#xff1a;屏幕高度 window.innerHeight&#xff1a;视口高度&#xff08;去除浏览器头尾的高度&#xff09; document.body.clientHeight&#xff1a;内容高度 vh&#xff1a;网页视口高度的1/100 vw&#xff1a;网页视口宽度的1/100 vmax&#xff…

GIF动图怎么变成jpg动图?一键分解GIF动画

GIF格式图片怎么转换成jpg格式图片&#xff1f;在日常生活中jpg、png转GIF格式非常的常见&#xff0c;那么gif转换成jpg格式应该怎么操作呢&#xff1f;很简单&#xff0c;给大家分享一款gif动态图片制作&#xff08;https://www.gif.cn/giffenjie&#xff09;工具&#xff0c;…

OpenCV实现的F矩阵+RANSAC原理与实践

1 RANSAC 筛选 1.1 大致原理 Random sample consensus (RANSAC)&#xff0c;即随机抽样一致性&#xff0c;其是一种用于估计模型参数的迭代方法&#xff0c;特别适用于处理包含离群点&#xff08;outliers&#xff09;的数据集 RANSAC 的主要思想是随机采样数据点&#xff0…

前端自定义导出PPT

1、背景 前端导出PPT&#xff0c;刚接触这个需求&#xff0c;还是比较懵逼&#xff0c;然后就在网上查找资料&#xff0c;最终确认是可行的&#xff1b;这个需求也是合理的&#xff0c;我们做了一个可视化数据报表&#xff0c;报表导出成PPT&#xff0c;将在线报表转成文档类型…

02、Servlet核心技术(下)

目录 1 ServletJDBC应用&#xff08;重点&#xff09; 2 重定向和转发&#xff08;重点&#xff09; 2.1 重定向的概述 2.2 转发的概述 3 Servlet线程安全&#xff08;重点&#xff09; 4 状态管理&#xff08;重点 &#xff09; 5 Cookie技术&#xff08;重点&#xf…

操作系统(5-7分)

内容概述 进程管理 进程的状态 前驱图 同步和互斥 PV操作&#xff08;难点&#xff09; PV操作由P操作原语和V操作原语组成&#xff08;原语是不可中断的过程&#xff09;&#xff0c;对信号量进行操作&#xff0c;具体定义如下&#xff1a; P&#xff08;S&#xff09;&#…

Selenium自动化测试 —— 通过cookie绕过验证码的操作

验证码的处理 对于web应用&#xff0c;很多地方比如登录、发帖都需要输入验证码&#xff0c;类型也多种多样&#xff1b;登录/核心操作过程中&#xff0c;系统会产生随机的验证码图片&#xff0c;进行验证才能进行后续操作 解决验证码的方法如下&#xff1a; 1、开发做个万能…

六、展示信息添加 animation 动态效果

简介 给每个信息组件内容添加动画效果,通过 animation 来怎么增强用户浏览时的交互体验。欢迎访问个人的简历网站预览效果 本章涉及修改与新增的文件:App.vue、main.ts、first.vue 、second.vue、third.vue 、fourth.vue 、fifth.vue 一、安装 animae 插件 先安装 animate…