摘要:前言的受標(biāo)簽影響的最大值我們有一個(gè)項(xiàng)的集合,其中第項(xiàng)的值為,標(biāo)簽為。我們從這些項(xiàng)中選出一個(gè)子集,這樣一來(lái)對(duì)于任意的標(biāo)簽,子集中標(biāo)簽為的項(xiàng)的數(shù)目總滿足。返回子集的最大可能的和。示例輸入輸出解釋選出的子集是第一項(xiàng),第二項(xiàng)和第三項(xiàng)。
前言
Weekly Contest 141的 受標(biāo)簽影響的最大值:
解題思路我們有一個(gè)項(xiàng)的集合,其中第 i 項(xiàng)的值為 values[i],標(biāo)簽為 labels[i]。
我們從這些項(xiàng)中選出一個(gè)子集 S,這樣一來(lái):
|S| <= num_wanted
對(duì)于任意的標(biāo)簽 L,子集 S 中標(biāo)簽為 L 的項(xiàng)的數(shù)目總滿足 <= use_limit。
返回子集 S 的最大可能的 和。
示例1:
輸入:values = [5,4,3,2,1], labels = [1,1,2,2,3], num_wanted = 3, use_limit = 1 輸出:9 解釋?zhuān)哼x出的子集是第一項(xiàng),第三項(xiàng)和第五項(xiàng)。示例2:
輸入:values = [5,4,3,2,1], labels = [1,3,3,3,2], num_wanted = 3, use_limit = 2 輸出:12 解釋?zhuān)哼x出的子集是第一項(xiàng),第二項(xiàng)和第三項(xiàng)。示例3:
輸入:values = [9,8,8,7,6], labels = [0,0,0,1,1], num_wanted = 3, use_limit = 1 輸出:16 解釋?zhuān)哼x出的子集是第一項(xiàng)和第四項(xiàng)。示例4:
輸入:values = [9,8,8,7,6], labels = [0,0,0,1,1], num_wanted = 3, use_limit = 2 輸出:24 解釋?zhuān)哼x出的子集是第一項(xiàng),第二項(xiàng)和第四項(xiàng)。提示:
1 <= values.length == labels.length <= 20000
0 <= values[i], labels[i] <= 20000
1 <= num_wanted, use_limit <= values.length
本題題目可能會(huì)有點(diǎn)難以理解,可用把題目中的項(xiàng)看做帶有值的標(biāo)簽。而labels就是標(biāo)簽列表,values就是標(biāo)簽列表對(duì)應(yīng)的標(biāo)簽值列表。
簡(jiǎn)單點(diǎn)說(shuō),標(biāo)簽與標(biāo)簽值的關(guān)系為多對(duì)多,一個(gè)標(biāo)簽可以有多個(gè)標(biāo)簽值,而一個(gè)相同的值可以多個(gè)標(biāo)簽都使用。
而題目的意思就是在所有項(xiàng)中選取num_wanted個(gè)元素,但是選取的元素如果存在標(biāo)簽一致的情況,只能存在use_limit個(gè)相同標(biāo)簽的項(xiàng)。找出滿足上述條件的子集,且該子集的項(xiàng)的標(biāo)簽值之和最大,并返回該最大值。
下面我以示例4作為例子,講解一下我的解題思路:
輸入:values = [9,8,8,7,6], labels = [0,0,0,1,1], num_wanted = 3, use_limit = 2 輸出:24 解釋?zhuān)哼x出的子集是第一項(xiàng),第二項(xiàng)和第四項(xiàng)。
將values和labels轉(zhuǎn)化為以values為key,每個(gè)key對(duì)應(yīng)多個(gè)label的結(jié)構(gòu),同時(shí)以key從大到小進(jìn)行排序。內(nèi)容如下所示
9 : [0] 8 : [0,0] 7 : [1] 6 : [1]
依次遍歷第1步中的數(shù)據(jù)并進(jìn)行處理,處理步驟如下:
遍歷key對(duì)應(yīng)的label列表
如果該label使用次數(shù)小于use_limit,則將將最大值加上對(duì)應(yīng)的key,同時(shí)num_wanted自減
每輪循環(huán)都要判斷num_wanted是否為0
實(shí)現(xiàn)代碼/** * 1090. 受標(biāo)簽影響的最大值 * @param values 標(biāo)簽值列表 * @param labels 標(biāo)簽名列表 * @param num_wanted 期待的標(biāo)簽個(gè)數(shù) * @param use_limit 每個(gè)標(biāo)簽可重復(fù)的次數(shù) * @return */ public int largestValsFromLabels(int[] values, int[] labels, int num_wanted, int use_limit) { // value和label的映射,需要注意使用的是入?yún)alues作為key倒序(從大到?。┐鎯?chǔ) Map> valueLabelMap = new TreeMap<>(Comparator.reverseOrder()); // 每個(gè)label的出現(xiàn)次數(shù) Map occurTimes = new HashMap<>(); // 最大值 int result = 0; for(int i=0;i list=new ArrayList<>(); list.add(labels[i]); valueLabelMap.put(values[i],list); } } Iterator >> it=valueLabelMap.entrySet().iterator(); while (it.hasNext()){ // 遍歷TreeMap Map.Entry > entry = it.next(); // 對(duì)應(yīng)的值 Integer value = entry.getKey(); List labelList = entry.getValue(); labelList.sort(Comparator.comparing(Integer::intValue)); for(int i=0;i
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/77774.html
摘要:目標(biāo)中間一段空白把導(dǎo)航欄分為左右兩個(gè)部分在導(dǎo)航欄上加上一個(gè)搜索框,但不被的樣式污染。 前置 本文需要對(duì)CSS,Vue,ElementUI有基本的了解。 本文以ElementUI提供的導(dǎo)航菜單組件為基礎(chǔ)。 本文希望能在此組件基礎(chǔ)上實(shí)現(xiàn)以下內(nèi)容: 中間一段空白把導(dǎo)航欄分為左右兩個(gè)部分 在導(dǎo)航欄上加上一個(gè)搜索框,但不被 el-menu-item 的樣式污染。 先研究清楚ElementUI...
摘要:本文通過(guò)一個(gè)簡(jiǎn)單實(shí)例,介紹中的一個(gè)叫模塊,可以實(shí)現(xiàn)全自動(dòng)獲取數(shù)據(jù)分析數(shù)據(jù)最終生成分析報(bào)告的全部操作。另外更有用的在于通過(guò)嵌入網(wǎng)絡(luò)爬蟲(chóng),以及對(duì)外部的接口,可以快速實(shí)現(xiàn)大量手工勞動(dòng)才能完成的工作,提高工作效率 日常工作當(dāng)中,特別是金融行業(yè)當(dāng)中,有不少人的工作是提取數(shù)據(jù),分析數(shù)據(jù),得到可視化圖表,并加入自已的研究分析結(jié)論,最終生成分析報(bào)告,并且有不少報(bào)告是定期生成,存在不少重復(fù)手工勞動(dòng)。本文...
摘要:屏幕分辨率是指一塊屏幕中畫(huà)面水平方向的像素值畫(huà)面垂直方向的像素值。圖像分辨率是指每英寸圖像內(nèi)的像素點(diǎn)數(shù)。圖像分辨率是有單位的,叫像素每英寸。設(shè)備像素可能不相同物理像素不會(huì)改變,單位是。及英寸,而英寸等于厘米舉個(gè) viewport是什么 移動(dòng)端中,分為兩個(gè)視口: layout viewport 布局視口: 視口的分辨率接近于PC顯示器,也就是html的寬度接近于pc端的寬度。 visu...
摘要:云端閃存部署細(xì)節(jié)塊存儲(chǔ)僅可用于連接到虛擬實(shí)例或虛擬機(jī)。在這些產(chǎn)品中,只有彈性塊存儲(chǔ)具有明確使用閃存存儲(chǔ)的功能。谷歌云平臺(tái)提供三種主要存儲(chǔ)選項(xiàng)云存儲(chǔ)對(duì)象永久磁盤(pán)塊和云文件存儲(chǔ)文件。隨著閃存存儲(chǔ)價(jià)格下降且設(shè)備容量提升,閃存存儲(chǔ)逐漸成為企業(yè)的首選存儲(chǔ)選項(xiàng)。公共云平臺(tái)上的存儲(chǔ)同樣是如此,這些平臺(tái)具有基于固態(tài)的存儲(chǔ)產(chǎn)品,可為需要存儲(chǔ)功能的應(yīng)用程序提高性能和吞吐量。本文中,讓我們來(lái)看看哪些閃存作為云存儲(chǔ)...
閱讀 3464·2021-11-18 10:02
閱讀 3707·2021-09-13 10:25
閱讀 1920·2021-07-26 23:38
閱讀 2568·2019-08-30 15:44
閱讀 2267·2019-08-30 13:51
閱讀 1223·2019-08-26 11:35
閱讀 2273·2019-08-26 10:29
閱讀 3444·2019-08-23 14:56