LeetCode 2099.找到和最大的長度為 K 的子序列:自定義排序

【LetMeFly】2099.找到和最大的長度為 K 的子序列:自定義排序

力扣題目鏈接:https://leetcode.cn/problems/find-subsequence-of-length-k-with-the-largest-sum/

給你一個整數數組?nums?和一個整數?k?。你需要找到?nums?中長度為 k?的 子序列?,且這個子序列的?和最大?

請你返回 任意 一個長度為?k?的整數子序列。

子序列?定義為從一個數組里刪除一些元素后,不改變剩下元素的順序得到的數組。

?

示例 1:

輸入:nums = [2,1,3,3], k = 2
輸出:[3,3]
解釋:
子序列有最大和:3 + 3 = 6 。

示例 2:

輸入:nums = [-1,-2,3,4], k = 3
輸出:[-1,3,4]
解釋:
子序列有最大和:-1 + 3 + 4 = 6 。

示例 3:

輸入:nums = [3,4,3,3], k = 2
輸出:[3,4]
解釋:
子序列有最大和:3 + 4 = 7 。
另一個可行的子序列為 [4, 3] 。

?

提示:

  • 1 <= nums.length <= 1000
  • -105?<= nums[i] <= 105
  • 1 <= k <= nums.length

Long Time No See.

解題方法:排序

使用一個“下標數組”idx,初始值 i d x [ i ] = i idx[i] = i idx[i]=i,然后對這個idx數組排序,排序依據是 n u m s [ i d x [ i ] ] nums[idx[i]] nums[idx[i]]大的優先。這樣, i d x idx idx的前 k k k個元素就是 n u m s nums nums最大的 k k k個數的下標了。

返回這 k k k個下標對應的 n u m s nums nums中的元素之前,不要忘了對 i d x idx idx再按從小到大的順序排個序,因為返回的“ n u m s nums nums子序列”是要保持原有順序的。

  • 時間復雜度 O ( n log ? n ) O(n\log n) O(nlogn),其中 n = l e n ( n u m s ) n=len(nums) n=len(nums)
  • 空間復雜度 O ( log ? n ) O(\log n) O(logn)

AC代碼

C++
/** @Author: LetMeFly* @Date: 2025-07-03 21:31:48* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-07-06 00:06:51*/
class Solution {
public:vector<int> maxSubsequence(vector<int>& nums, int k) {vector<int> idx(nums.size());for (int i = 0; i < nums.size(); i++) {idx[i] = i;}sort(idx.begin(), idx.end(), [&nums](int i, int j) {return nums[i] > nums[j];});idx.resize(k);sort(idx.begin(), idx.end());for (int &t : idx) {t = nums[t];}return idx;}
};
Python
'''
Author: LetMeFly
Date: 2025-07-03 21:31:48
LastEditors: LetMeFly.xyz
LastEditTime: 2025-07-06 00:09:39
'''
from typing import Listclass Solution:def maxSubsequence(self, nums: List[int], k: int) -> List[int]:idx = [i for i in range(len(nums))]idx.sort(key=lambda i : -nums[i])idx = idx[:k]idx.sort()return [nums[i] for i in idx]
Java
/** @Author: LetMeFly* @Date: 2025-07-03 21:31:48* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-07-06 22:03:44*/
import java.util.Arrays;class Solution {public int[] maxSubsequence(int[] nums, int k) {Integer[] idx = new Integer[nums.length];for (int i = 0; i < nums.length; i++) {idx[i] = i;}Arrays.sort(idx, (i, j) -> nums[j] - nums[i]);int[] ans = new int[k];for (int i = 0; i < k; i++) {ans[i] = idx[i];}Arrays.sort(ans);for (int i = 0; i < k; i++) {ans[i] = nums[ans[i]];}return ans;}
}
Go
/** @Author: LetMeFly* @Date: 2025-07-03 21:31:48* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-07-06 22:16:49*/
package mainimport "sort"func maxSubsequence(nums []int, k int) []int {idx := make([]int, len(nums))for i := range idx {idx[i] = i}sort.Slice(idx, func(i, j int) bool {return nums[idx[i]] > nums[idx[j]]  // 不可以nums[i] > nums[j],因為排序過程中idx[i]可能不再是i })idx = idx[:k]sort.Ints(idx)for th, i := range idx {idx[th] = nums[i]}return idx
}

同步發文于CSDN和我的個人博客,原創不易,轉載經作者同意后請附上原文鏈接哦~

千篇源碼題解已開源

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/87887.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/87887.shtml
英文地址,請注明出處:http://en.pswp.cn/web/87887.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

循環移位網絡設計

總體架構 模塊描述 循環移位網絡模塊&#xff08;模塊名&#xff1a;VAL_CS_PROC&#xff09;&#xff0c;對輸入數據&#xff08;in_data&#xff09;做循環移位處理&#xff0c;兩個cycle即可輸出數據。 Fig 1 循環移位模塊頂層 設計要求 00】 支持對data_num個有效數據做…

IO進程線程(IPC通訊)

目錄 一、IPC通訊機制 1&#xff09;傳統的通訊機制&#xff1a; 2&#xff09;systemV 的通訊機制&#xff1a; 3&#xff09;跨主機的通訊機制&#xff1a; 1、無名管道 1&#xff09;無名管道的概念 2&#xff09;無名管道的函數 3&#xff09;無名管道通訊&#xf…

Webpack 5 核心機制詳解與打包性能優化實踐

&#x1f916; 作者簡介&#xff1a;水煮白菜王&#xff0c;一個web開發工程師 &#x1f47b; &#x1f440; 文章專欄&#xff1a; 前端專欄 &#xff0c;記錄一下平時在博客寫作中&#xff0c;總結出的一些開發技巧和知識歸納總結?。 感謝支持&#x1f495;&#x1f495;&am…

Manus AI與多語言手寫識別

技術文章大綱&#xff1a;Manus AI與多語言手寫識別 引言 手寫識別技術的發展背景與市場需求Manus AI的定位與核心技術優勢多語言場景下的挑戰與機遇 Manus AI的核心技術架構 基于深度學習的端到端手寫識別模型多模態數據融合&#xff08;筆跡壓力、書寫軌跡等&#xff09;…

Go與Python爬蟲對比及模板實現

go語言和Python語言都可選作用來爬蟲項目&#xff0c;因為python經過十幾年的累積&#xff0c;各種庫是應有盡有&#xff0c;學習也相對比較簡單&#xff0c;相比GO起步較晚還是有很大優勢的&#xff0c;么有對比就沒有傷害&#xff0c;所以我利用一個下午&#xff0c;寫個Go爬…

Vidwall: 支持將 4K 視頻設置為動態桌面壁紙,兼容 MP4 和 MOV 格式

支持將 4K 視頻設置為動態桌面壁紙&#xff0c;兼容 MP4 和 MOV 格式。只需將視頻拖入應用界面&#xff0c;點擊即可立即應用為桌面背景。 為桌面增添生動趣味的動態壁紙效果&#xff01;錄制視頻時設置動態背景&#xff0c;也能讓畫面更吸引人。 &#x1f4e5; https://apps.…

【LeetCode 熱題 100】234. 回文鏈表——快慢指針+反轉鏈表

Problem: 234. 回文鏈表 題目&#xff1a;給你一個單鏈表的頭節點 head &#xff0c;請你判斷該鏈表是否為回文鏈表。如果是&#xff0c;返回 true &#xff1b;否則&#xff0c;返回 false 。 文章目錄 整體思路完整代碼時空復雜度時間復雜度&#xff1a;O(N)空間復雜度&#…

【源力覺醒 創作者計劃】開源、易用、強中文:文心一言4.5或是 普通人/非AI程序員 的第一款中文AI?

前言 你有沒有發現&#xff0c;AI 正在悄悄滲透進我們的生活&#xff1a;寫文案、畫插圖、做PPT、答作業&#xff0c;它幾乎無所不能&#x1f60d; &#xff01;但很多人可能會問&#xff1a; AI&#xff0c;我能用嗎&#xff1f;用得起嗎&#xff1f;適合我嗎&#xff1f;特別…

【保姆級喂飯教程】Git圖形化客戶端Sourcetree安裝及使用教程

目錄 前言一、SourceTree簡介二、安裝教程三、使用教程1. 添加倉庫 四、評價總結后記參考文獻 前言 在查找Git Flow實現工具的時候&#xff0c;看到了SourceTree&#xff0c;支持Git Flow、GitHub Flow等多種Git工作流&#xff0c;安裝簡單學習一下。 一、SourceTree簡介 Git的…

【kafka】kafka3.3.2常用命令

查看kafka服務版本 [rootlocalhost eicar]# kafka-server-start.sh --version [2025-06-23 11:10:54,106] INFO Registered kafka:typekafka.Log4jController MBean (kafka.utils.Log4jControllerRegistration$) 3.3.2 (Commit:b66af662e61082cb) [rootlocalhost eicar]#查看消…

LastActivityView -查看電腦上的所有操作記錄

LastActivityView 是一款由 NirSoft 開發的免費工具&#xff0c;適用于 Windows 操作系統。它能夠通過分析系統日志、Prefetch 文件、圖標緩存數據庫、注冊表以及藍屏 Dump 文件等多種來源&#xff0c;綜合展示電腦從安裝系統至今的所有操作記錄。 LastActivityView 的功能 L…

English Practice - Day 3

Hi ChatGPT, I am back. can we start today’s english practice? Welcome back, Kelly! &#x1f60a; Yes — let’s begin today’s English practice! You’re doing great by showing up consistently. &#x1f4aa; Q&#xff1a; What’s the weather like today w…

quickbi看板內嵌入powerbi頁面(含單點登錄解決方法)

quickbi看板內嵌入powerbi頁面&#xff08;含單點登錄解決方法&#xff09; 實現步驟 要實現在quickbi看板中嵌入powerbi頁面&#xff0c;分4步來實現。 1. 新建quickbi看板&#xff0c; 2. 添加內嵌頁面 3. 獲取Powerbi鏈接 4. 將powerbi鏈接粘貼到內嵌頁面中 第一步&am…

CentOS-6如何配置網絡設置IP? 筆記250706

CentOS-6如何配置網絡設置IP? 筆記250706 1?? 參考 1 CentOS 6 網絡配置完全指南 在 CentOS 6 中配置網絡設置主要涉及修改 /etc/sysconfig/network-scripts/ 目錄下的配置文件。以下是詳細配置步驟&#xff1a; 一、配置靜態 IP 地址 1. 編輯網卡配置文件 vi /etc/sys…

WPF學習筆記(24)命令與ICommand接口

命令與ICommand接口一、命令1. ICommandSource2. 示例3. CommandBinding二、ICommand1.ICommand接口2. ICommand用法3. CanExecute總結一、命令 官方文檔&#xff1a;https://learn.microsoft.com/zh-cn/dotnet/desktop/wpf/advanced/commanding-overview 1. ICommandSource 官…

TCP長連接保持在線狀態

TCP長連接是指在一次TCP連接建立后&#xff0c;保持連接狀態較長時間&#xff0c;用于多次數據傳輸&#xff0c;而不是每次通信后立即斷開。這種機制對于需要頻繁通信的應用非常重要。 保持TCP長連接在線的方法 1. 心跳機制(Heartbeat) 實現原理&#xff1a;定期發送小數據包…

華為OD機試 2025B卷 - 報文響應時間 (C++ Python JAVA JS C語言)

2025B卷目錄點擊查看: 華為OD機試2025B卷真題題庫目錄|機考題庫 + 算法考點詳解 2025B卷 100分題型 題目描述 IGMP 協議中,有一個字段稱作最大響應時間 (Max Response Time) ,HOST收到查詢報文,解折出 MaxResponsetime 字段后,需要在 (0,MaxResponseTime] 時間 (s) 內選…

深入理解微服務中的服務注冊與發現(Consul)

在當今數字化浪潮下&#xff0c;微服務架構憑借其高內聚、低耦合的特性&#xff0c;成為眾多企業構建復雜應用系統的首選方案。然而&#xff0c;隨著服務數量的不斷增加&#xff0c;服務之間的調用與管理變得愈發復雜。這時&#xff0c;服務注冊與發現就如同微服務架構中的 “導…

Zephyr【2】-----內核調度[1]

內核調度 Zephyr 內核的調度器是基于什么原則選擇當前執行線程的&#xff1f; 總是選擇優先級最高的就緒線程作為當前線程。 當多個線程優先級相同時&#xff0c;調度器會如何選擇&#xff1f; 線程的 “就緒狀態” 和 “非就緒狀態” 分別指什么&#xff1f;哪些情況會導致…

LangChain內置工具包和聯網搜索

目錄 一、什么是智能體?工具包又是什么&#xff1f; 二、智能體(Agent)的出現是為了解決哪些問題&#xff1f; 三、LangChain里面創建工具方式 3.1 tool 裝飾器&#xff1a;用來定義一個簡單的工具函數,, 可以直接給函數加上這個裝飾器&#xff0c;讓函數成為可調用的工具…