当前位置: 首页 > news >正文

温州微网站制作哪里有/关键词是什么意思

温州微网站制作哪里有,关键词是什么意思,制作ppt的软件电脑版,如何自己做直播网站目录1.题目2.思路3.代码实现(Java)1.题目 给你一个整数数组 nums 和一个整数 k ,找出 nums 中和至少为 k 的最短非空子数组 ,并返回该子数组的长度。如果不存在这样的子数组 ,返回 -1 。子数组是数组中连续的一部分。…

目录

  • 1.题目
  • 2.思路
  • 3.代码实现(Java)

1.题目

给你一个整数数组 nums 和一个整数 k ,找出 nums 中和至少为 k 的最短非空子数组 ,并返回该子数组的长度。如果不存在这样的子数组 ,返回 -1 。子数组是数组中连续的一部分。

示例 1:
输入:nums = [1], k = 1
输出:1

示例 2:
输入:nums = [1,2], k = 4
输出:-1

示例 3:
输入:nums = [2,-1,2], k = 3
输出:3

提示:
1 <= nums.length <= 105
-105 <= nums[i] <= 105
1 <= k <= 109

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/shortest-subarray-with-sum-at-least-k

2.思路

(1)前缀和
常规想法是使用前缀和数组,即 preSum[i] 保存 nums[0…i - 1] 的前缀和,然后再使用两层 for 循环来遍历所有的子数组,并判断其元素总和是否大于等于 k,如果符合条件,则用变量 res 记录遍历过程中子数组的最小长度,否则继续遍历。如果遍历结束后仍未找到,则返回 -1。但是在 LeetCode 上提交时会出现“超出时间限制”的提示!这说明该方法(时间复杂度为 O(n2))还需优化,具体优化方法见思路 2。

(2)前缀和 & 双端队列
思路参考本题官方题解。

3.代码实现(Java)

//思路1————前缀和
class Solution {public int shortestSubarray(int[] nums, int k) {int res = Integer.MAX_VALUE;int length = nums.length;int[] preSum = new int[length + 1];for (int i = 1; i < length + 1; i++) {preSum[i] = preSum[i - 1] + nums[i - 1];//如果某个元素大于等于 k,那么满足条件的最短子数组的长度必为 1if (nums[i - 1] >= k) {return 1;}}for (int i = 0; i < length + 1; i++) {for (int j = i + 1; j < length + 1; j++) {// preSum[j] - preSum[i] 为数组 nums 中连续子数组[i, j)的和if (preSum[j] - preSum[i] >= k) {res = Math.min(res, j - i);/*由于子数组 nums[i...j - 1] 的和已经大于等于 k,且在第 2 层 for 循环中,i 的值固定,无需扩大 j 去判断以 nums[i] 开头的子数组的和,所以此处可以直接退出当前第 2 层循环,不过依然不能从根本上解决问题,在 LeetCode 上提交时会出现“超出时间限制”的提示!*/break;}}}//如果不存在满足条件的数组,返回 -1return res == Integer.MAX_VALUE ? -1 : res;}
}
//思路2————前缀和 & 双端队列
class Solution {public int shortestSubarray(int[] nums, int k) {int res = Integer.MAX_VALUE;int length = nums.length;long[] preSum = new long[length + 1];for (int i = 1; i < length + 1; i++) {preSum[i] = preSum[i - 1] + (long) nums[i - 1];if (nums[i - 1] >= k) {return 1;}}//定义双端队列Deque<Integer> deque = new ArrayDeque<>();for (int i = 0; i < preSum.length; i++) {while (!deque.isEmpty() && preSum[i] <= preSum[deque.getLast()]) {deque.removeLast();}while (!deque.isEmpty() && preSum[i] - preSum[deque.peek()] >= k) {res = Math.min(res, i - deque.poll());}deque.add(i);}return res == Integer.MAX_VALUE ? -1 : res;}
}
http://www.jmfq.cn/news/5045203.html

相关文章:

  • wordpress主题操作/seo零基础教学视频
  • 普通网站设计/全渠道营销管理平台
  • 桂林做旅游网站失败的网站/站长之家官网登录入口
  • 查看网站是什么语言做的/百度竞价在哪里开户
  • 做淘宝网站用什么软件/百度指数查询官网入口登录
  • 秦皇岛网站团队/企业推广宣传方式
  • 福州免费建站品牌企业/seo管理
  • wordpress 翻译文件/优化大师哪个好
  • 西安的电商网站设计/百度推广seo优化
  • wordpress邮箱链接修复/seo服务商排名
  • 网站设计上市公司/百度服务中心电话
  • 二手优品哪个网站做/推广平台怎么做
  • 提供网站推广公司电话/新媒体营销推广方案
  • 网站转化下降原因/网站做优化
  • 网站建设it职位/创建网站的流程是什么
  • 中山外贸营销网站建设/百度平台官网
  • 安徽基层党组织建设网站/阿里巴巴指数查询
  • wordpress 时光捕手/天津seo托管
  • 网站定制与模板开发/最快的新闻发布平台
  • wordpress首页调用/温州网站建设优化
  • 高端网站建设kgu/网络营销策划的基本原则是什么
  • asp网站有的打不开/亚马逊关键词优化软件
  • 用ip做网站/哪里的网络推广培训好
  • 网站网页设计公司有哪些/西安seo技术
  • 电商网站建设网/新闻头条最新消息摘抄
  • 微信商城登录平台/短视频seo
  • 个体户做网站是怎么备案/做推广哪个平台好
  • 慈溪机械加工网/seo公司网站
  • 深圳设计网站推荐/线上推广如何引流
  • html手机网站怎么做/哪里做网站便宜