题目地址:https://leetcode-cn.com/problems/check-if-all-1s-are-at-least-length-k-places-away/

题目描述

给你一个由若干 01 组成的数组 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. 1 <= nums.length <= 10^5
  2. 0 <= k <= nums.length
  3. nums[i] 的值为 01

题目大意

判断给出的数组中,是否所有的 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 日 —— 天气好热,瞬间入夏

最新文章

  1. 常用 Git 命令清单
  2. 《TCP/IP详解卷1:协议》第1章 概述-读书笔记
  3. Merge OUTPUT 高级用法综合写的一个MergeTab的存储过程
  4. codeforce --- 237C
  5. Solr使用solr4J操作索引库
  6. php5.2通过saprfc扩展远程连接sap730成功案例
  7. Java面试04|Spring框架
  8. 2016年,总结篇 续 如何从 JQ 转到 VueJS 开发(一)
  9. python+selenium测试
  10. ajax实现异步前后台交互,模拟百度搜索框智能提示
  11. Spring-bean的循环依赖以及解决方式
  12. Jmeter调用 Json接口测试之关键点申明Content-Type类型
  13. A. Srdce and Triangle 几何题
  14. 停止学习框架(Stop Learning Frameworks)
  15. [ 转载 ] get和post的区别
  16. Web编辑器的使用
  17. Linux pyenv环境安装
  18. 《Node.js核心技术教程》学习笔记
  19. c#如何操作ppt的播放 【转】
  20. 【mongodb】Mongodb初识

热门文章

  1. YAOI Round #1 (Div.2) 题解
  2. typora 图床配置方法
  3. A Child&#39;s History of England.45
  4. day6 基本数据类型及内置方法
  5. flink---实时项目----day03---1.练习讲解(全局参数,数据以parquet格式写入hdfs中) 2 异步查询 3 BroadcastState
  6. Windows Server 2016域控制器升级到Windows Server 2022遇到的问题记录Fix error 0x800F081E – 0x20003
  7. c学习 - 第四章:顺序程序设计
  8. 【编程思想】【设计模式】【其他模式】graph_search
  9. 【Java 8】 Reduce方法
  10. SpringCloud微服务-Eureka服务注册与发现