2022-04-17:给定一个数组arr,其中的值有可能正、负、0, 给定一个正数k。 返回累加和>=k的所有子数组中,最短的子数组长度。 来自字节跳动。力扣862。
2022-04-17:给定一个数组arr,其中的值有可能正、负、0,
给定一个正数k。
返回累加和>=k的所有子数组中,最短的子数组长度。
来自字节跳动。力扣862。
答案2022-04-17:
看到子数组,联想到结尾怎么样,开头怎么样。
预处理前缀和,单调栈。
达标的前缀和,哪一个离k最近?
单调栈+二分。复杂度是O(N*logN)。
双端队列。
时间复杂度:O(N)。
代码用rust编写。代码如下:
fn main() {
let arr: Vec<isize> = vec![2, -1, 2];
let K: isize = 3;
let ret = shortest_subarray2(arr, K);
println!("{}", ret);
}
const MAXVALUE: isize = 9223372036854775807;
fn shortest_subarray2(arr: Vec<isize>, K: isize) -> isize {
let N = arr.len();
let mut sum: Vec<isize> = vec![];
for i in 0..N + 1 {
sum.push(0);
}
for i in 0..N {
sum[i + 1] = sum[i] + arr[i];
}
let mut ans: isize = MAXVALUE;
let mut dq: Vec<isize> = vec![];
for i in 0..N + 1 {
dq.push(0);
}
let mut l: isize = 0;
let mut r: isize = 0;
for i in 0..N + 1 {
// 头部开始,符合条件的,从头部弹出!
while l != r && sum[i] - sum[dq[l as usize] as usize] >= K {
ans = get_min(ans, i as isize - dq[l as usize]);
l += 1;
}
// 尾部开始,前缀和比当前的前缀和大于等于的,从尾部弹出!
while l != r && sum[dq[(r - 1) as usize] as usize] >= sum[i as usize] {
r -= 1;
}
dq[r as usize] = i as isize;
r += 1;
}
if ans != MAXVALUE {
ans
} else {
-1
}
}
fn get_min(a: isize, b: isize) -> isize {
if a < b {
a
} else {
b
}
}
执行结果如下:

2022-04-17:给定一个数组arr,其中的值有可能正、负、0, 给定一个正数k。 返回累加和>=k的所有子数组中,最短的子数组长度。 来自字节跳动。力扣862。的更多相关文章
- 给定一个double类型的数组arr,其中的元素可正可负可0,返回子数组累乘的最大乘积。例如arr=[-2.5,4,0,3,0.5,8,-1],子数组[3,0.5,8]累乘可以获得最大的乘积12,所以返回12。
分析,是一个dp的题目, 设f[i]表示以i为结尾的最大值,g[i]表示以i结尾的最小值,那么 f[i+1] = max{f[i]*arr[i+1], g[i]*arr[i+1],arr[i+1]} ...
- 给定一个无序数组arr,求出需要排序的最短子数组长度。例如: arr = [1,5,3,4,2,6,7] 返回4,因为只有[5,3,4,2]需要排序。
思路 首先从左往右遍历,然后设定一个Max,如果遍历的过程中array[i]大于Max,则置换Max,若小于Max,则指定 k 记录该位置. 然后再从右往左遍历,设定一个Min,在遍历的过程中arra ...
- 力扣1438. 绝对差不超过限制的最长连续子数组-C语言实现-中等难度
题目 传送门 文本 给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit . 如果不存在满足条 ...
- 【力扣leetcode】-787. K站中转内最便宜的航班
题目描述: 有 n 个城市通过一些航班连接.给你一个数组 flights ,其中 flights[i] = [fromi, toi, pricei] ,表示该航班都从城市 fromi 开始,以价格 p ...
- 不等"金九银十",金风八月,我早已拿下字节跳动的offer
字节跳动,我是在网上投的简历,之前也投过一次,简历都没通过删选,后来让师姐帮我改了一下简历,重新投另一个部门,获得了面试机会.7月23日,中午HR打电话过来预约了下午4点半面试,说会在线写代码,让我准 ...
- 5年Android程序员面试字节跳动两轮后被完虐,请查收给你的面试指南
大家应该看过很多分享面试成功的经验,但根据幸存者偏差的理论,也许多看看别人面试失败在哪里,对自己才更有帮助. 最近跟一个朋友聊天,他准备了几个月,刚刚参加完字节跳动面试,第二面结束后,嗯,挂了- 所以 ...
- 被字节跳动、小米、美团面试官问的AndroidFramework难倒了? 这里有23道面试真题,助力成为offer收割机!
目录 1.Android中多进程通信的方式有哪些?a.进程通信你用过哪些?原理是什么?(字节跳动.小米)2.描述下Binder机制原理?(东方头条)3.Binder线程池的工作过程是什么样?(东方头条 ...
- 字节跳动基于Apache Hudi构建EB级数据湖实践
来自字节跳动的管梓越同学一篇关于Apache Hudi在字节跳动推荐系统中EB级数据量实践的分享. 接下来将分为场景需求.设计选型.功能支持.性能调优.未来展望五部分介绍Hudi在字节跳动推荐系统中的 ...
- 【Warrior刷题笔记】力扣169. 多数元素 【排序 || 哈希 || 随机算法 || 摩尔投票法】详细注释 不断优化 极致压榨
题目 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/majority-element/ 注意,该题在LC中被标注为easy,所以我们更多应该关 ...
- 力扣—gray code (格雷编码) python实现
题目描述: 中文: 格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异. 给定一个代表编码总位数的非负整数 n,打印其格雷编码序列.格雷编码序列必须以 0 开头. 英文: Th ...
随机推荐
- jwt auth0 和 jsonwebtoken比较
参考: https://blog.csdn.net/lizz861109/article/details/104614942/
- https加固,https://ip暴露后端IP。
增加server配置server { listen 443 default_server; server_name _ ; ssl on; ssl_certificate test.crt 随便设置一 ...
- 11.4 显示窗口(harib08d)11.5 小实验(hearib08e) 11.6 高速计数器(harib08f)
11.4 显示窗口(harib08d) 书P206 11.5 小实验(hearib08e) 书P208 11.6 高速计数器(harib08f) 书P209
- 加密脚本分析—evil.py
加密脚本分析-evil.py 1.题目 源文件 一共两个文件 enc_flag.txt evil.py(原文件无注释) 1 # coding: utf-8 2 3 import base64 4 im ...
- Kafka 消息送达语义
更多内容,前往IT-BLOG 消息送达语义是消息系统中一个常见的问题,主要包含三种语义:[1]At most once:消息发送或消费至多一次:[2]At least once:消息发送或消费至少一次 ...
- 详解DDD:如何避免写流水账代码?
在日常工作中我观察到,面对老系统重构和迁移场景,有大量代码属于流水账代码,通常能看到开发在对外的API接口里直接写业务逻辑代码,或者在一个服务里大量的堆接口,导致业务逻辑实际无法收敛,接口复用性比较差 ...
- 基于swiper.js的异型轮播
基于原生swiper.js的异型轮播 <div class="swiper-container" > <div class="swiper-wrappe ...
- 微软开源了一个 助力开发LLM 加持的应用的 工具包 semantic-kernel
在首席执行官萨蒂亚·纳德拉(Satya Nadella)的支持下,微软似乎正在迅速转变为一家以人工智能为中心的公司.最近微软的众多产品线都采用GPT-4加持,从Microsoft 365等商业产品到& ...
- 6.sql注入
sql注入 目录 sql注入 1.SQL注入原理 2.如何判断注入点 联合注入 报错注入(有错误报出) 布尔盲注(不管输入什么,界面只会出现两种结果) 时间盲注(不管输入什么,界面都是一样的) 堆叠注 ...
- Docker 容器上部署 Zabbix
首先,从 Docker Hub 上拉取 Zabbix 镜像.可以使用以下命令: docker pull zabbix/zabbix-server-mysql:latest 这会下载最新版本的 Zabb ...