【LeetCode】1437. 是否所有 1 都至少相隔 k 个元素 Check If All 1s Are at Least Length K Places Away
2024-09-05 07:19:04
- 作者: 负雪明烛
- id: fuxuemingzhu
- 个人博客:http://fuxuemingzhu.cn/
题目地址:https://leetcode-cn.com/problems/check-if-all-1s-are-at-least-length-k-places-away/
题目描述
给你一个由若干 0
和 1
组成的数组 nums
以及整数 k
。如果所有 1
都至少相隔 k
个元素,则返回 True
;否则,返回 False
。
示例 1:
输入:nums = [1,0,0,0,1,0,0,1], k = 2
输出:true
解释:每个 1 都至少相隔 2 个元素。
示例 2:
输入:nums = [1,0,0,1,0,1], k = 2
输出:false
解释:第二个 1 和第三个 1 之间只隔了 1 个元素。
示例 3:
输入:nums = [1,1,1,1,1], k = 0
输出:true
示例 4:
输入:nums = [0,1,0,1], k = 1
输出:true
提示:
1 <= nums.length <= 10^5
0 <= k <= nums.length
nums[i]
的值为0
或1
题目大意
判断给出的数组中,是否所有的 1 的间隔都至少为 k.
解题方法
指针
看一眼题目给出的 nums 的长度,我们知道必须用 O(1) 的时间复杂度解决。
使用一次遍历,在遍历的过程中,使用 left_1 指针保存当前遍历位置左边的最后一个 1。如果当前遍历的数字也是 1,则判断一下和左边最后一个 1 的距离是否 >= k + 1。
Python 代码如下:
class Solution(object):
def kLengthApart(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: bool
"""
left_1 = float("-inf")
for i, num in enumerate(nums):
if num == 1:
if i - left_1 < k + 1:
return False
left_1 = i
return True
欢迎关注负雪明烛的刷题博客,leetcode刷题800多,每道都讲解了详细写法!
日期
2020 年 5 月 3 日 —— 天气好热,瞬间入夏
最新文章
- 常用 Git 命令清单
- 《TCP/IP详解卷1:协议》第1章 概述-读书笔记
- Merge OUTPUT 高级用法综合写的一个MergeTab的存储过程
- codeforce --- 237C
- Solr使用solr4J操作索引库
- php5.2通过saprfc扩展远程连接sap730成功案例
- Java面试04|Spring框架
- 2016年,总结篇 续 如何从 JQ 转到 VueJS 开发(一)
- python+selenium测试
- ajax实现异步前后台交互,模拟百度搜索框智能提示
- Spring-bean的循环依赖以及解决方式
- Jmeter调用 Json接口测试之关键点申明Content-Type类型
- A. Srdce and Triangle 几何题
- 停止学习框架(Stop Learning Frameworks)
- [ 转载 ] get和post的区别
- Web编辑器的使用
- Linux pyenv环境安装
- 《Node.js核心技术教程》学习笔记
- c#如何操作ppt的播放 【转】
- 【mongodb】Mongodb初识
热门文章
- YAOI Round #1 (Div.2) 题解
- typora 图床配置方法
- A Child&#39;s History of England.45
- day6 基本数据类型及内置方法
- flink---实时项目----day03---1.练习讲解(全局参数,数据以parquet格式写入hdfs中) 2 异步查询 3 BroadcastState
- Windows Server 2016域控制器升级到Windows Server 2022遇到的问题记录Fix error 0x800F081E – 0x20003
- c学习 - 第四章:顺序程序设计
- 【编程思想】【设计模式】【其他模式】graph_search
- 【Java 8】 Reduce方法
- SpringCloud微服务-Eureka服务注册与发现