当前位置: 首页 > news >正文

LeetCode-day11-2813. 子序列最大优雅度

LeetCode-day11-2813. 子序列最大优雅度

  • 题目描述
  • 示例
    • 示例1:
    • 示例2:
    • 示例3:
  • 思路
  • 代码

题目描述

给你一个长度为 n 的二维整数数组 items 和一个整数 k 。

items[i] = [profiti, categoryi],其中 profiti 和 categoryi 分别表示第 i 个项目的利润和类别。

现定义 items 的 子序列优雅度 可以用 total_profit + distinct_categories2 计算,其中 total_profit 是子序列中所有项目的利润总和,distinct_categories 是所选子序列所含的所有类别中不同类别的数量。

你的任务是从 items 所有长度为 k 的子序列中,找出 最大优雅度

用整数形式表示并返回 items 中所有长度恰好为 k 的子序列的最大优雅度。

注意:数组的子序列是经由原数组删除一些元素(可能不删除)而产生的新数组,且删除不改变其余元素相对顺序。

示例

示例1:

输入:items = [[3,2],[5,1],[10,1]], k = 2
输出:17
解释:
在这个例子中,我们需要选出长度为 2 的子序列。
其中一种方案是 items[0] = [3,2] 和 items[2] = [10,1] 。
子序列的总利润为 3 + 10 = 13 ,子序列包含 2 种不同类别 [2,1] 。
因此,优雅度为 13 + 22 = 17 ,可以证明 17 是可以获得的最大优雅度。

示例2:

输入:items = [[3,1],[3,1],[2,2],[5,3]], k = 3
输出:19
解释:
在这个例子中,我们需要选出长度为 3 的子序列。
其中一种方案是 items[0] = [3,1] ,items[2] = [2,2] 和 items[3] = [5,3] 。
子序列的总利润为 3 + 2 + 5 = 10 ,子序列包含 3 种不同类别 [1, 2, 3] 。
因此,优雅度为 10 + 32 = 19 ,可以证明 19 是可以获得的最大优雅度。

示例3:

输入:items = [[1,1],[2,1],[3,1]], k = 3
输出:7
解释:
在这个例子中,我们需要选出长度为 3 的子序列。
我们需要选中所有项目。
子序列的总利润为 1 + 2 + 3 = 6,子序列包含 1 种不同类别 [1] 。
因此,最大优雅度为 6 + 12 = 7 。

思路

采用贪心策略。

代码

 public long findMaximumElegance(int[][] items, int k) {Arrays.sort(items,(a,b) -> b[0] - a[0]);long ans = 0;long totalProfit = 0;Set<Integer>  set = new HashSet<>();Deque<Integer> deque = new ArrayDeque<>();for (int i = 0; i < items.length; i++) {int profit = items[i][0];int category = items[i][1];if (i < k){totalProfit += profit;if (!set.add(category)){deque.push(profit);}} else if (!deque.isEmpty() && set.add(category)) {totalProfit += profit - deque.pop();}ans = Math.max(ans,totalProfit+ (long) set.size() * set.size());}return ans;}

相关文章:

  • 每日一题——Python实现PAT乙级1012 数字分类(举一反三+思想解读+逐步优化)五千字好文
  • 基于YOLO检测算法(单检测器网络+多视频输入)设计与实现
  • pdf格式转成jpg图片,pdf格式如何转jpg
  • 网络安全等级保护基本要求解读- 安全计算环境-应用系统和数据安全
  • 19.2 HTTP客户端-定制HTTP请求、调试HTTP、响应超时
  • 国产芯片狂飙,连遥遥领先都给他们写感谢信
  • 2024蓝桥杯初赛决赛pwn题全解
  • java如何预防sql注入
  • 46-4 等级保护 - 网络安全等级保护概述
  • 构建 deno/fresh 的 docker 镜像
  • 解锁 LLMs 的“思考”能力:Chain-of-Thought(CoT) 技术推动复杂推理的新发展
  • 数智教育创新如何向未来?腾讯云与你探索革新之路
  • 捋清UITableView展示不同类型数据的差异
  • 聚合分析是Elasticsearch中非常强大的工具
  • nginx 配置2级目录 刷新404
  • 【译】JS基础算法脚本:字符串结尾
  • 2019.2.20 c++ 知识梳理
  • chrome扩展demo1-小时钟
  • golang中接口赋值与方法集
  • JavaScript-Array类型
  • javascript数组去重/查找/插入/删除
  • Laravel核心解读--Facades
  • Mysql优化
  • PermissionScope Swift4 兼容问题
  • Web设计流程优化:网页效果图设计新思路
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 批量截取pdf文件
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 微服务框架lagom
  • 无服务器化是企业 IT 架构的未来吗?
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 携程小程序初体验
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • ​渐进式Web应用PWA的未来
  • (C语言)逆序输出字符串
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (floyd+补集) poj 3275
  • (办公)springboot配置aop处理请求.
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (力扣题库)跳跃游戏II(c++)
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (转)visual stdio 书签功能介绍
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .net Application的目录
  • .net 调用php,php 调用.net com组件 --
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .net6 webapi log4net完整配置使用流程
  • .so文件(linux系统)
  • ;号自动换行
  • @RunWith注解作用
  • @Service注解让spring找到你的Service bean
  • @vue/cli 3.x+引入jQuery