国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

LeetCode、2542. 最大子序列的分?jǐn)?shù)【中等,排序+小頂堆】

這篇具有很好參考價(jià)值的文章主要介紹了LeetCode、2542. 最大子序列的分?jǐn)?shù)【中等,排序+小頂堆】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


前言

博主介紹:?目前全網(wǎng)粉絲2W+,csdn博客專家、Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者,博客之星、阿里云平臺(tái)優(yōu)質(zhì)作者、專注于Java后端技術(shù)領(lǐng)域。

涵蓋技術(shù)內(nèi)容:Java后端、算法、分布式微服務(wù)、中間件、前端、運(yùn)維、ROS等。

博主所有博客文件目錄索引:博客目錄索引(持續(xù)更新)

視頻平臺(tái):b站-Coder長(zhǎng)路


LeetCode、2542. 最大子序列的分?jǐn)?shù)【中等,排序+小頂堆】

來源:《LeetCode 75》

題目及類型

題目鏈接:2542. 最大子序列的分?jǐn)?shù)

類型:數(shù)據(jù)結(jié)構(gòu)/樹/小頂堆


思路及代碼實(shí)現(xiàn)

思路:排序+小頂堆

  1. 對(duì)nums2進(jìn)行降序排序(排序數(shù)組中的值為nums2的索引位置值)【目的:快速定位k個(gè)元素中最小的值,我們是直接由min中的最大值來開始推導(dǎo)】。
  2. 從排序數(shù)組的第一個(gè)元素開始,由于是順序,每次取到的i位置,其nums2[i]都是在[i-k+1,i]中最小的,那么就可以實(shí)際就是題目中的min(nums2[i0] , nums2[i1], … ,nums2[ik - 1])。那么對(duì)于進(jìn)行k個(gè)元素的和怎么計(jì)算呢?每次取到索引值,我們就直接累加這個(gè)nums1[i]到sum中,并且將這個(gè)值添加到一個(gè)小頂堆里。
  3. 每次得到一個(gè)新的i位置時(shí),sum會(huì)累加nums1[i],同時(shí)將nums2[i]作為min(k個(gè)nums2元素)的最小值,最后計(jì)算得到結(jié)果后,再將小頂堆中的最小值移除(問這個(gè)移除是否影響到min最小值的確定,并不會(huì)原因是每次取到的nums2[i]都已經(jīng)是前面范圍的最小值了!所以我們也無需管移除的最小值是什么)

復(fù)雜度分析:時(shí)間復(fù)雜度O(n.logn);空間復(fù)雜度O(n)

class Solution {
    public long maxScore(int[] nums1, int[] nums2, int k) {
        int n = nums1.length;
        //維護(hù)k個(gè)元素的小頂堆
        PriorityQueue<Integer> queue = new PriorityQueue<>(k);
        //創(chuàng)建nums2數(shù)組的索引數(shù)組,并且根據(jù)nums2數(shù)組中的值降序排列的索引數(shù)組
        Integer[] sorteds = new Integer[n];
        for (int i = 0; i < n; i ++) {
            sorteds[i] = i;
        }
        //根據(jù)nums2的值進(jìn)行降序排列
        Arrays.sort(sorteds, (i, j)->nums2[j]-nums2[i]);
		//定義一個(gè)k個(gè)值組成的sum
        long sum = 0L;
        //首先合并k-1個(gè)元素值
        for (int i = 0; i < k - 1; i ++) {
            sum += nums1[sorteds[i]];//合并的是基于索引值的nums1數(shù)組元素
            queue.offer(nums1[sorteds[i]]);
        }
        long ans = 0L;
        //遍歷剩余的所有元素,每次構(gòu)成一個(gè)新的組合
        for (int i = k - 1; i < n; i ++) {
            //將當(dāng)前值累加,并將當(dāng)前值添加到
            sum += nums1[sorteds[i]];
            queue.offer(nums1[sorteds[i]]);
            //sum即為k個(gè)元素之和   nums2[sorteds[i]]則為k個(gè)中最小的值
            ans = Math.max(ans, sum * nums2[sorteds[i]]);
            //出小頂堆中最小的元素
            sum -= queue.poll();
        }
        return ans;
    }
}

LeetCode、2542. 最大子序列的分?jǐn)?shù)【中等,排序+小頂堆】,# LeetCode,leetcode,算法,職場(chǎng)和發(fā)展

資料獲取

大家點(diǎn)贊、收藏、關(guān)注、評(píng)論啦~

精彩專欄推薦訂閱:在下方專欄????

  • 長(zhǎng)路-文章目錄匯總(算法、后端Java、前端、運(yùn)維技術(shù)導(dǎo)航):博主所有博客導(dǎo)航索引匯總
  • 開源項(xiàng)目Studio-Vue—校園工作室管理系統(tǒng)(含前后臺(tái),SpringBoot+Vue):博主個(gè)人獨(dú)立項(xiàng)目,包含詳細(xì)部署上線視頻,已開源
  • 學(xué)習(xí)與生活-專欄:可以了解博主的學(xué)習(xí)歷程
  • 算法專欄:算法收錄

更多博客與資料可查看????獲取聯(lián)系方式????,??文末獲取開發(fā)資源及更多資源博客獲取??


整理者:長(zhǎng)路 整理時(shí)間:2024.1.17文章來源地址http://www.zghlxwxcb.cn/news/detail-800637.html

到了這里,關(guān)于LeetCode、2542. 最大子序列的分?jǐn)?shù)【中等,排序+小頂堆】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 軟考知識(shí)點(diǎn)——數(shù)據(jù)結(jié)構(gòu):大頂堆與小頂堆、哈夫曼樹

    軟考知識(shí)點(diǎn)——數(shù)據(jù)結(jié)構(gòu):大頂堆與小頂堆、哈夫曼樹

    目錄 一、大頂堆與小頂堆 1.大頂堆與小頂堆的概念 2.大頂堆的構(gòu)建 二、哈夫曼樹 1.哈夫曼樹的定義 2.基本概念 3.構(gòu)造哈夫曼樹 4.哈夫曼編碼 大頂堆:每個(gè)結(jié)點(diǎn)的值都大于或等于其左右孩子結(jié)點(diǎn)的值。 小頂堆:每個(gè)結(jié)點(diǎn)的值都小于或等于其左右孩子結(jié)點(diǎn)的值。 以數(shù)組A=(2,

    2024年02月06日
    瀏覽(18)
  • 【貪心算法】【中位貪心】LeetCode:100123.執(zhí)行操作使頻率分?jǐn)?shù)最大

    【貪心算法】【中位貪心】LeetCode:100123.執(zhí)行操作使頻率分?jǐn)?shù)最大

    雙指針 C++算法:前綴和、前綴乘積、前綴異或的原理、源碼及測(cè)試用例 包括課程視頻 貪心算法 給你一個(gè)下標(biāo)從 0 開始的整數(shù)數(shù)組 nums 和一個(gè)整數(shù) k 。 你可以對(duì)數(shù)組執(zhí)行 至多 k 次操作: 從數(shù)組中選擇一個(gè)下標(biāo) i ,將 nums[i] 增加 或者 減少 1 。 最終數(shù)組的頻率分?jǐn)?shù)定義為數(shù)組

    2024年02月04日
    瀏覽(91)
  • 【LeetCode-中等】221. 最大正方形(詳解)

    【LeetCode-中等】221. 最大正方形(詳解)

    在一個(gè)由? \\\'0\\\' ?和? \\\'1\\\' ?組成的二維矩陣內(nèi),找到只包含? \\\'1\\\' ?的最大正方形,并返回其面積。 力扣原題鏈接 ? 暴力法一般不是最優(yōu)解,但是可以拿來練手 由于正方形的面積等于邊長(zhǎng)的平方,因此要找到最大正方形的面積,首先需要找到最大正方形的邊長(zhǎng),然后計(jì)算最大邊

    2024年02月13日
    瀏覽(56)
  • [leetcode] 2530. 執(zhí)行 K 次操作后的最大分?jǐn)?shù) M

    給你一個(gè)下標(biāo)從 0 開始的整數(shù)數(shù)組 nums 和一個(gè)整數(shù) k 。你的 起始分?jǐn)?shù) 為 0 。 在一步 操作 中: 選出一個(gè)滿足 0 = i nums.length 的下標(biāo) i , 將你的 分?jǐn)?shù) 增加 nums[i] ,并且 將 nums[i] 替換為 ceil(nums[i] / 3) 。 返回在 恰好 執(zhí)行 k 次操作后,你可能獲得的最大分?jǐn)?shù)。 向上取整函數(shù) c

    2024年02月07日
    瀏覽(89)
  • LeetCode、162. 尋找峰值【中等,最大值、二分】

    LeetCode、162. 尋找峰值【中等,最大值、二分】

    博主介紹:?目前全網(wǎng)粉絲2W+,csdn博客專家、Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者,博客之星、阿里云平臺(tái)優(yōu)質(zhì)作者、專注于Java后端技術(shù)領(lǐng)域。 涵蓋技術(shù)內(nèi)容:Java后端、算法、分布式微服務(wù)、中間件、前端、運(yùn)維、ROS等。 博主所有博客文件目錄索引:博客目錄索引(持續(xù)更新) 視頻平臺(tái):

    2024年01月20日
    瀏覽(28)
  • 【Leetcode】【每日一題】【中等】1465. 切割后面積最大的蛋糕

    【Leetcode】【每日一題】【中等】1465. 切割后面積最大的蛋糕

    力扣(LeetCode)官網(wǎng) - 全球極客摯愛的技術(shù)成長(zhǎng)平臺(tái) 備戰(zhàn)技術(shù)面試?力扣提供海量技術(shù)面試資源,幫助你高效提升編程技能,輕松拿下世界 IT 名企 Dream Offer。 https://leetcode.cn/problems/maximum-area-of-a-piece-of-cake-after-horizontal-and-vertical-cuts/description/?envType=daily-questionenvId=2023-10-27 矩形

    2024年02月07日
    瀏覽(21)
  • LeetCode_動(dòng)態(tài)規(guī)劃_中等_918.環(huán)形子數(shù)組的最大和

    給定一個(gè)長(zhǎng)度為 n 的環(huán)形整數(shù)數(shù)組 nums ,返回 nums 的非空子數(shù)組的最大可能和。 環(huán)形數(shù)組意味著數(shù)組的末端將會(huì)與開頭相連呈環(huán)狀。形式上, nums[i] 的下一個(gè)元素是 nums[(i + 1) % n] , nums[i] 的前一個(gè)元素是 nums[(i - 1 + n) % n] 。 子數(shù)組最多只能包含固定緩沖區(qū) nums 中的每個(gè)元素

    2024年02月09日
    瀏覽(26)
  • 【LeetCode-中等題】148. 排序鏈表

    【LeetCode-中等題】148. 排序鏈表

    把鏈表放到List集合,排好序,再依據(jù)List集合創(chuàng)建一個(gè)新有序鏈表返回就行了 優(yōu)先隊(duì)列 往這個(gè)優(yōu)先隊(duì)列中插入元素時(shí),會(huì)按照節(jié)點(diǎn) val 屬性的大小順序進(jìn)行排序,即小的節(jié)點(diǎn)排在前面,大的節(jié)點(diǎn)排在后面。依次談棧再創(chuàng)建新鏈表 優(yōu)先隊(duì)列聲明 先找到中間點(diǎn) 按中間點(diǎn)切割鏈表

    2024年02月11日
    瀏覽(14)
  • 每天一道leetcode:516. 最長(zhǎng)回文子序列(動(dòng)態(tài)規(guī)劃&中等)

    每天一道leetcode:516. 最長(zhǎng)回文子序列(動(dòng)態(tài)規(guī)劃&中等)

    給你一個(gè)字符串 s ,找出其中最長(zhǎng)的回文子序列,并返回該序列的長(zhǎng)度。 子序列定義為:不改變剩余字符順序的情況下,刪除某些字符或者不刪除任何字符形成的一個(gè)序列。 1 = s.length = 1000 s 僅由小寫英文字母組成 動(dòng)態(tài)規(guī)劃 ,使用二維dp數(shù)組記錄[i,j]間的最大回文子序列長(zhǎng)度

    2024年02月13日
    瀏覽(23)
  • 【LeetCode-中等】劍指 Offer 31. 棧的壓入、彈出序列(詳解)

    輸入兩個(gè)整數(shù)序列,第一個(gè)序列表示棧的壓入順序,請(qǐng)判斷第二個(gè)序列是否為該棧的彈出順序。假設(shè)壓入棧的所有數(shù)字均不相等。例如,序列 {1,2,3,4,5} 是某棧的壓棧序列,序列 {4,5,3,2,1} 是該壓棧序列對(duì)應(yīng)的一個(gè)彈出序列,但 {4,3,5,1,2} 就不可能是該壓棧序列的彈出序列。 示例

    2024年02月13日
    瀏覽(13)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包