LeetCode——2389. 和有限的最长子序列
创始人
2025-05-30 02:54:17
0

一、题目

给你一个长度为 n 的整数数组 nums ,和一个长度为 m 的整数数组 queries 。

返回一个长度为 m 的数组 answer ,其中 answer[i] 是 nums 中 元素之和小于等于 queries[i] 的 子序列 的 最大 长度 。

子序列 是由一个数组删除某些元素(也可以不删除)但不改变剩余元素顺序得到的一个数组。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/longest-subsequence-with-limited-sum/description/

二、C++解法

我的思路及代码

由于是返回的子序列的大小,所以我们可以对原数组进行排序,然后采用遍历的方式,挨个将 nums 前面的 j 位相加,当前和大于 queries[i] 时,我们保存此时的 j 即可。值得注意的是,如果所有的 nums 相加都小于当前的 queries[i] 时,我们需要单独给 ans 的最后一个数设置为 nums 的长度。

class Solution {
public:vector answerQueries(vector& nums, vector& queries) {int size = queries.size();vector ans(size);sort(nums.begin(),nums.end());for(int i=0;iint temp = 0;int j;for(j=0;jtemp+=nums[j];if(temp>queries[i]){ans[i] = j;break;}}if(j==nums.size()){  ans[i] = j;}}return ans;}
};
  • 时间复杂度:O((n × m+nlog⁡n),其中 n 是数组 nums 的长度,m 是数组 queries 的长度。对 nums 进行排序需要 O(nlog⁡n)的时间,遍历需要 n × m 的时间
  • 空间复杂度:O(1)。返回值不计入空间复杂度

官方参考代码

排序+前缀和+二分查找

先对 nums 进行排序后进行前缀和处理,然后通过二分查找定位到当前的 queries [i] 是在前缀和数组中的哪一个位置,当前位置也就是答案

class Solution {
public:vector answerQueries(vector& nums, vector& queries) {int n = nums.size(), m = queries.size();sort(nums.begin(), nums.end());vector f(n + 1);for (int i = 0; i < n; i++) {f[i + 1] = f[i] + nums[i];}vector answer(m);for (int i = 0; i < m; i++) {answer[i] = upper_bound(f.begin(), f.end(), queries[i]) - f.begin() - 1;}return answer;}
};
  • 时间复杂度:O((n+m)×log⁡n),其中 n 是数组 nums 的长度,m 是数组 queries 的长度。对 nums 进行排序需要 O(nlog⁡n)的时间,二分查找需要 O(log⁡n) 的时间
  • 空间复杂度:O(n)。返回值不计入空间复杂度

相关内容

热门资讯

安卓系统信付通,安全无忧的移动... 你知道吗?在安卓手机的世界里,有一个超级好用的支付工具,它就是信付通。今天,就让我带你来全方位了解一...
小米官方系统安卓包,深度解析与... 亲爱的数码爱好者们,你是否曾为手机系统而烦恼?市面上那么多手机品牌,各种操作系统让人眼花缭乱。今天,...
自制安卓手机双系统,自制安卓手... 你有没有想过,自己的手机可以同时运行两个操作系统呢?没错,就是那种安卓手机双系统!听起来是不是很酷?...
小米安卓系统怎么设置,科技前沿... 小米手机的用户们,是不是觉得安卓系统有点复杂,设置起来有点头疼呢?别担心,今天就来手把手教你如何轻松...
点歌系统支持安卓系统么,安卓用... 你有没有想过,在手机上点歌听歌,是不是也能像在KTV里那样随心所欲呢?现在,就让我来告诉你一个超级酷...
原版安卓系统刷机,解锁无限可能 你有没有想过,你的安卓手机其实可以焕然一新?没错,就是那种原汁原味的安卓系统,让你的手机重新找回当初...
欧尚改装安卓系统,打造智能驾驶... 你有没有想过,你的欧尚汽车其实也可以变身成为智能座驾呢?没错,就是那个你每天上下班的伙伴——欧尚,现...
安卓系统最新事件,揭秘最新重大... 你知道吗?最近安卓系统可是发生了一件超级大事件,简直让人兴奋得心跳加速!这不,我就迫不及待地来和你分...
早期电话手表安卓系统,安卓系统... 你有没有想过,小时候那些看似简单的玩具,现在竟然也能玩出花来?比如,早期的电话手表,那时候的功能可真...
安卓老系统手机游戏,安卓老系统... 你有没有发现,那些安卓老系统手机,虽然看起来有点古老,但它们在游戏界可是有着自己独特的魅力呢!想象那...
安卓系统重启还是开关,重启与开... 手机突然卡壳了,是不是又该给安卓系统来个重启大法了?别急,今天就来聊聊这个让人又爱又恨的“安卓系统重...
安卓系统刷入iso,轻松实现个... 你有没有想过,你的安卓手机其实可以像变形金刚一样,换上全新的“皮肤”?没错,就是刷入ISO系统!这可...
安卓机系统无法关机,探究原因与... 最近我的安卓手机怎么啦?总是关机不成功,真是让人头疼啊!这可怎么办呢?别急,让我来帮你分析找出解决这...
安卓什么系统广告最多,揭秘最新... 你有没有发现,每次打开安卓手机,广告就像无处不在的小精灵,跳来跳去,让人眼花缭乱?今天,就让我带你一...
禁止中国使用安卓系统,“安卓系... 你知道吗?最近互联网上掀起了一股热议,那就是关于中国是否应该禁止使用安卓系统的话题。这可不是闹着玩的...
如何分辨ios系统和安卓系统,... 你有没有想过,你的手机里装的是iOS系统还是安卓系统呢?这两种系统各有千秋,但分辨它们其实并不难。今...
如何查询安卓系统版本,安卓系统... 你有没有想过,你的安卓手机里隐藏着一个小秘密——那就是它的系统版本!知道这个秘密,不仅能让你更好地了...
lg电视系统和安卓系统比较,性... 你有没有发现,现在家里的电视已经不再是那个傻乎乎的“大盒子”了?它变得聪明起来,能和你互动,能上网,...
安卓系统增加主页按钮,Andr... 你知道吗?最近安卓系统又来了一次大更新,其中最引人注目的变化之一就是主页按钮的全新设计。这可不是一个...
安卓刷win系统机型,探索兼容... 你有没有想过,你的安卓手机竟然也能变身成为Windows系统的电脑呢?没错,这就是今天我要跟你分享的...