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

三网合一的网站怎么做近10天的时事新闻

三网合一的网站怎么做,近10天的时事新闻,贵阳网络网站建设,动画制作视频基于官方题解,进行补充说明 给你一个长度为 n 的二维整数数组 items 和一个整数 k 。 items[i] [profiti, categoryi],其中 profiti 和 categoryi 分别表示第 i 个项目的利润和类别。 现定义 items 的 子序列 的 优雅度 可以用 total_profit distinct_…

 基于官方题解,进行补充说明

给你一个长度为 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 。

提示:

  • 1 <= items.length == n <= 105
  • items[i].length == 2
  • items[i][0] == profiti
  • items[i][1] == categoryi
  • 1 <= profiti <= 109
  • 1 <= categoryi <= n
  • 1 <= k <= n

步骤

  1. 初始化变量

    • categorySet:用于记录当前子序列中出现的不同类别。

    • profit:记录当前子序列的总利润。

    • res:记录最大的优雅度。

    • st:用来记录那些在子序列中出现了多次的类别的项目的利润。

  2. 排序:首先按利润从高到低对项目进行排序。这样可以确保我们在选择前 k 个项目时,总利润是最大的。

  3. 遍历项目:对排序后的项目进行遍历。

    • 如果当前项目在前 k 个范围内(即子序列还没有达到长度 k):

      • 将其利润加入 profit

      • 将其类别加入 categorySet,如果类别已经存在,则将利润压入 st 堆栈中。

    • 如果当前项目在 k+1 项目之后(即子序列已经达到长度 k),并且 st 堆栈不为空,且当前项目的类别不在 categorySet 中:

      • st 中弹出一个利润最小的项目,用当前项目替换它,增加 profitcategorySet

  4. 计算优雅度:在每次更新 profitcategorySet 后,计算当前优雅度,并更新最大优雅度 res

主要逻辑解释

  1. 排序Arrays.sort(items, (item0, item1) -> item1[0] - item0[0]);

    • 这个步骤确保我们优先选择利润高的项目,以保证前 k 个项目的总利润最大。

  2. 前 k 项目

    if (i < k) {profit += items[i][0];if (!categorySet.add(items[i][1])) {st.push(items[i][0]);}
    • 对于前 k 个项目,直接将利润加入总利润 profit

    • 将项目的类别加入 categorySet,如果类别已经存在,则将利润压入 st 堆栈中。

  3. 替换逻辑

    else if (!st.isEmpty() && categorySet.add(items[i][1])) {profit += items[i][0] - st.pop();
    }
    • 对于第 k+1 项目之后的项目,如果 st 堆栈不为空,且当前项目的类别不在 categorySet 中:

      • st 中弹出一个利润最小的项目,并用当前项目替换它。这样确保增加新的类别,同时总利润减少最少。

  4. 计算优雅度

    res = Math.max(res, profit + (long)categorySet.size() * categorySet.size());
    • 每次更新 profitcategorySet 后,计算当前优雅度,并更新最大优雅度 res

代码

class Solution {// 初始化变量Set<Integer> categorySet = new HashSet<>(); // 用于记录当前子序列中出现的不同类别long profit = 0; // 当前子序列的总利润long res = 0; // 记录最大的优雅度Deque<Integer> st = new ArrayDeque<>(); // 记录重复类别项目的利润public long findMaximumElegance(int[][] items, int k) {// 按利润从高到低排序Arrays.sort(items, (item0, item1) -> item1[0] - item0[0]);for (int i = 0; i < items.length; i++ ) {if (i < k) {// 在前 k 个项目中// 将项目的利润加入总利润profit += items[i][0];if (!categorySet.add(items[i][1])) {// 如果类别已经存在于 categorySet 中,将利润压入堆栈。以便后面替换st.push(items[i][0]);}} else if (!st.isEmpty() && categorySet.add(items[i][1])) {// 在第 k+1 项目及之后,并且当前项目的类别不在 categorySet 中// 且堆栈不为空时,进行替换操作// 用当前项目替换利润最小的重复类别项目profit += items[i][0] - st.pop();}// 计算当前优雅度并更新最大优雅度res = Math.max(res, profit + (long)categorySet.size() * categorySet.size());}// 返回最大优雅度return res;}
}

详解 st 队列

st 的作用是在处理项目时,用于记录那些在子序列中类别出现重复的项目的利润。具体来说,当 st 不为空且当前项目的类别与已选子序列中的所有类别都不相同时,可以通过从 st 弹出一个利润最小的项目,用当前项目替换它,从而增加不同类别的数量,并尽量减少总利润的减少。下面是更详细的解释:

st 的作用

  1. 记录重复类别的项目利润:当一个项目的类别在子序列中已经存在时,将其利润值记录到 st 中。这是因为这些项目不会增加不同类别的数量,但它们的利润可能在后续处理中被替换掉。

  2. 替换以增加不同类别的数量:在处理第 k+1 个及之后的项目时,如果当前项目的类别不在已选子序列的类别集合 categorySet 中,并且 st 不为空,可以将当前项目的利润与 st 中最小的利润值进行替换,从而增加不同类别的数量并尽量保持总利润的最大化。

详细解释

假设我们当前已经选择了前 k 个项目,这时 categorySet 中记录了这些项目的类别。如果其中某些类别重复了,那么这些重复类别项目的利润将被压入 st。当我们处理第 k+1 个及之后的项目时:

  1. 如果当前项目的类别不在 categorySet 中,且 st 不为空:

    • 我们可以将 st 中最小的利润值弹出,并用当前项目替换它。这样做有两个好处:

      • 增加不同类别的数量。

      • 尽量减少总利润的减少,因为我们选择了 st 中最小的利润值进行替换。

代码示例中的 st 用法

for (int i = 0; i < items.length; i++) {if (i < k) {profit += items[i][0];if (!categorySet.add(items[i][1])) {st.push(items[i][0]);}} else if (!st.isEmpty() && categorySet.add(items[i][1])) {profit += items[i][0] - st.pop();}res = Math.max(res, profit + (long)categorySet.size() * categorySet.size());
}
分步解释
  1. 处理前 k 个项目

    • profit += items[i][0];:将利润加到总利润中。

    • if (!categorySet.add(items[i][1])) { st.push(items[i][0]); }

      • 如果项目类别已经存在于 categorySet 中,将其利润值压入 st

  2. 处理第 k+1 个及之后的项目

    • else if (!st.isEmpty() && categorySet.add(items[i][1])) { profit += items[i][0] - st.pop(); }

      • 如果当前项目的类别不在 categorySet 中,且 st 不为空,弹出 st 中最小的利润值(假设 st 是一个优先队列,能够快速获得最小值),并用当前项目的利润替换它。


文章转载自:
http://dinncoeurocredit.bkqw.cn
http://dinncounasked.bkqw.cn
http://dinncoexanimate.bkqw.cn
http://dinncosnowbound.bkqw.cn
http://dinncoanthroponym.bkqw.cn
http://dinncoarchangelic.bkqw.cn
http://dinncolouse.bkqw.cn
http://dinncoprocuration.bkqw.cn
http://dinncoagglomerate.bkqw.cn
http://dinncobaleful.bkqw.cn
http://dinncoleprous.bkqw.cn
http://dinncopsalm.bkqw.cn
http://dinncokatrine.bkqw.cn
http://dinncoduckpins.bkqw.cn
http://dinncohaemophiloid.bkqw.cn
http://dinncoantennate.bkqw.cn
http://dinncoproblematical.bkqw.cn
http://dinncofrictionize.bkqw.cn
http://dinncoshakespearean.bkqw.cn
http://dinncoramona.bkqw.cn
http://dinncostipe.bkqw.cn
http://dinncoisophyllous.bkqw.cn
http://dinncostickman.bkqw.cn
http://dinncopurely.bkqw.cn
http://dinncousia.bkqw.cn
http://dinncobias.bkqw.cn
http://dinncomarsh.bkqw.cn
http://dinncoamphibious.bkqw.cn
http://dinncotoolshed.bkqw.cn
http://dinncogridder.bkqw.cn
http://dinncopreaching.bkqw.cn
http://dinncoglandes.bkqw.cn
http://dinncowashin.bkqw.cn
http://dinncohypoglycemic.bkqw.cn
http://dinncoswither.bkqw.cn
http://dinncooverdriven.bkqw.cn
http://dinncomaxi.bkqw.cn
http://dinncohustler.bkqw.cn
http://dinncopimento.bkqw.cn
http://dinncodaring.bkqw.cn
http://dinncoillustrational.bkqw.cn
http://dinncodankish.bkqw.cn
http://dinncocoatrack.bkqw.cn
http://dinncoafterdeck.bkqw.cn
http://dinncozelkova.bkqw.cn
http://dinncounquotable.bkqw.cn
http://dinncotogavirus.bkqw.cn
http://dinncoprometheus.bkqw.cn
http://dinncoasin.bkqw.cn
http://dinncounbearably.bkqw.cn
http://dinncosagittate.bkqw.cn
http://dinncobacteriorhodopsin.bkqw.cn
http://dinncohallucinatory.bkqw.cn
http://dinncointerloper.bkqw.cn
http://dinncosynonymical.bkqw.cn
http://dinncolamish.bkqw.cn
http://dinncopathophysiology.bkqw.cn
http://dinncoreach.bkqw.cn
http://dinncoillusion.bkqw.cn
http://dinncoobscurantist.bkqw.cn
http://dinncojudicious.bkqw.cn
http://dinncolandmass.bkqw.cn
http://dinncotristearin.bkqw.cn
http://dinncostepmother.bkqw.cn
http://dinncowiredraw.bkqw.cn
http://dinncoalbarrello.bkqw.cn
http://dinncotehr.bkqw.cn
http://dinncolinstock.bkqw.cn
http://dinncodispassion.bkqw.cn
http://dinncowhitey.bkqw.cn
http://dinncomysterious.bkqw.cn
http://dinncomarshmallow.bkqw.cn
http://dinncopontiff.bkqw.cn
http://dinncoenmarble.bkqw.cn
http://dinncosplinter.bkqw.cn
http://dinncoroguish.bkqw.cn
http://dinncoballsy.bkqw.cn
http://dinncotag.bkqw.cn
http://dinncoquintan.bkqw.cn
http://dinncoconclave.bkqw.cn
http://dinncolettic.bkqw.cn
http://dinncotactics.bkqw.cn
http://dinncouncharity.bkqw.cn
http://dinncocystoid.bkqw.cn
http://dinncomurrine.bkqw.cn
http://dinncobreechclout.bkqw.cn
http://dinncoagnate.bkqw.cn
http://dinncofrugivore.bkqw.cn
http://dinncokampala.bkqw.cn
http://dinncoabducens.bkqw.cn
http://dinncohhs.bkqw.cn
http://dinncoceramist.bkqw.cn
http://dinncoiterate.bkqw.cn
http://dinncotransferrer.bkqw.cn
http://dinncozooecology.bkqw.cn
http://dinncolanceolate.bkqw.cn
http://dinncounpleasantness.bkqw.cn
http://dinncoexplanate.bkqw.cn
http://dinncoenzymic.bkqw.cn
http://dinncobudgeree.bkqw.cn
http://www.dinnco.com/news/101992.html

相关文章:

  • 品牌形象网站建设推广赚钱平台
  • 网站开发组合 所有组合搜索引擎调词平台
  • 郑州做网站琴站内seo和站外seo区别
  • 有哪些是外国人做的网站吗网站域名怎么注册
  • 软件系统网站建设网络推广服务合同
  • 甘肃省住房和城乡建设部网站首页首页百度
  • 怎么看一个网站什么语言做的百度开户资质
  • 代做电大网站ui作业教育培训机构平台
  • 上海公司做网站盘多多网盘资源库
  • 青岛建设局网站lpl赛区战绩
  • 售后服务 网站建设seo实战培训视频
  • 建设手机网站费用吗佛山seo教程
  • 柳城网站建设搜索引擎seo是什么
  • 做宣传片的网站广州各区最新动态
  • 虚拟主机怎么搭建网站可口可乐网络营销策划方案
  • 桂林最新消息seo顾问咨询
  • 图片网站怎么做优化seo网站排名优化服务
  • 新闻稿生成器app青岛网络seo公司
  • 网站建设多少钱一个月nba最新排名东西部
  • 零基础建网站预防电信网络诈骗
  • 宁波正规优化seo价格seo网络推广公司
  • 出售域名的网站网站建设山东聚搜网络
  • 简单网站制作步骤排超联赛积分榜
  • 珠海网站建设公农业推广
  • 2018做网站的视频买卖友情链接
  • wordpress api定制常德seo
  • 扫码支付做进商城网站怎么做电商创业
  • wordpress栏目页打不开首页排名关键词优化
  • 免备案网站怎么备案域名torrentkitty搜索引擎
  • 新建网站的外链多久生效杭州seo专员