文章
时间轴
标签
音乐室
友人帐
一刻时光
清单
留言板
相册
算法海洋
关于
Slcpの童话镇 🏰
写文章
2389. 和有限的最长子序列
简单
数据结构与算法
原题链接
发布日期:
2023年03月17日
文章字数:
5.1k
阅读次数:
440
阅读时长:
0小时0分0秒
## 方法一:纯暴力破解 ![image-20230317113420398](https://img.slcp.top/image-20230317113420398.png) ### 解题思路 - 排序,将`nums`进行排序,得到从小到大的数组。根据题意,我们不需要考虑满足条件的元素集合,只要考虑满足条件的数量 - 遍历,将`queries`进行遍历并依次比较 > 复杂度分析 时间复杂度: `O(nq)`,`n`为`nums`的数组长度,`q`为`queries`的数组长度 空间复杂度: `O(q)` ### 代码 ~~~java class Solution { public static int[] answerQueries(int[] nums, int[] queries) { Arrays.sort(nums); int[] arr = new int[queries.length]; for(int i = 0;i < queries.length; i++) { int sum = 0; int num = 0; for(int j = 0;j < nums.length; j++) { sum += nums[j]; if(sum <= queries[i]) { num++; }else { break; } } arr[i] = num; } return arr; } } ~~~ ## 方法二:非纯暴力破解 ![image-20230317131605806](https://img.slcp.top/image-20230317131605806.png) ### 解题思路 - 复用数组,求前缀和 - 遍历 > 复杂度分析 时间复杂度: `O(log(nq))`,`n`为`nums`的数组长度,`q`为`queries`的数组长度 空间复杂度: `O(q)` ### 代码 ~~~java class Solution { public int[] answerQueries(int[] nums, int[] queries) { int[] arr = new int[queries.length]; int nl = nums.length; Arrays.sort(nums); for (int i = 1; i < nl; i++) { nums[i]=nums[i-1]+nums[i]; } for (int i = 0; i <queries.length ; i++) { if (queries[i]<nums[0]){ arr[i]=0; }else if (queries[i]>=nums[nl-1]){ arr[i]=nl; }else { for (int j = 0; j < nums.length; j++) { if(queries[i]<nums[j]){ arr[i]=j; break; } } } } return arr; } } ~~~
您阅读这篇文章共耗时:
0小时16分34秒
文章链接:
https://www.slcp.top/article/read/1636607254006788097
版权声明:
本博客所有文章除特別声明外,均采用
CC BY 4.0
许可协议。转载请注明来源
Slcp
!
转载文章以及部分引用均为自己整理记录学习而用,若有侵权,请联系删除。
数据结构与算法
评论
Valine
Gitalk
目录
搜索
首页
前进
后退
刷新
申请友链
在线联系