Leetcode2389
系列 - Leetcode
系列 - 简单
目录
题目描述
给你一个长度为 n 的整数数组 nums ,和一个长度为 m 的整数数组 queries 。
返回一个长度为 m 的数组 answer ,其中 answer[i] 是 nums 中 元素之和小于等于 queries[i] 的子序列的最大长度 。
子序列是由一个数组删除某些元素(也可以不删除)但不改变剩余元素顺序得到的一个数组。
解题思路
因为仅求元素和小于等于 queries[i] 的子序列的最大长度,因此可以先对 nums 进行排序,排序后不影响最终结果。
首先,声明一个长度为 n+1 大小的数组 f 用于存储 nums 中前 i 个元素之和, 声明一个长度为 m 的数组 ans 用于存储最终结果。
其次,由于求最大长度的子序列,因此使用 upper_bound() 查找 queries[i] 是否在 f 中出现,如果没出现,将 ans[i] 置零;如果出现,则将 ans[i] 置为当前位置-1。 此处 -1 是由于 upper_bound() 返回的是首个大于查找元素的位置,而 f[i]存储的是 nums 中前 i-1 个元素的和,因此需要 -1。
最终,返回ans,本题结束。
|
|