关于切片越界的问题,这个解法给了参考

测试用例

0,0,1,0,1
从这个测试用例中,我们可以看到一次性就写出下面的if语句是有一定难度的

  1. 第一个元素就是0,所以第一个条件成立后,进行i-1判断就越界了。但是这个0是可以改为1的,原因是i+1位置是0,符合题目要求。所以应先判断i+1位置再判断i-1
  2. i+1 < len(flowerbed) && flowerbed[i+1] == 0。关于这条语句充分揭示了什么是&&。当第一个条件不成立,我们就不进行第二次判断。这一点很重要
  3. || i+1 >= len(flowerbed)) &&
  4. || i-1 < 0)
  5. 3和4给了一个切片越界问题的处理思路。在处理切片,难免会发生越界问题的判断,如果访问了越界元素,那么久会产生错误。通过在要执行的语句后面添加||操作符的两个边界判断条件,可以产生理想的效果。

如果后面遇到类似的操作方式,再补充

func canPlaceFlowers(flowerbed []int, n int) bool {for i := 0; i < len(flowerbed); i++ {if flowerbed[i] == 0 && // 检查 i 的值((i+1 < len(flowerbed) && flowerbed[i+1] == 0) || i+1 >= len(flowerbed)) && // 检查 i+1 的值((i-1 >= 0 && flowerbed[i-1] == 0) || i-1 < 0) { // 检查 i-1 的值flowerbed[i] = 1n--if n <= 0 {return true}}}return n <= 0
}

605. 种花问题 golang 切片越界问题和逻辑操作符的思考相关推荐

  1. 665. 非递减数列 golang 切片越界问题的探讨(二)

    思路 给定一个长度为 n 的整数数组,你的任务是判断在最多改变 1 个元素的情况下,该数组能否变成一个非递减数列. 我们是这样定义一个非递减数列的: 对于数组中所有的 i (1 <= i < ...

  2. 通俗易懂:贪心算法(三):习题练习 (力扣605种花问题、122买卖股票的最佳时机)

    看完本文,可以顺便解决leetcode以下两个题目: 605.种花问题

  3. golang切片转为字符串,字符串转切片

    golang切片转为字符串,字符串转切片 package mainimport ("fmt""strings" )func main() {s := []str ...

  4. 【贪心】605. 种花问题

    605. 种花问题 难度简单381 假设有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给你一个整数数组  flowerbed 表 ...

  5. 605. 种花问题(贪心算法)

    605. 种花问题 题目描述: 假设有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给你一个整数数组  flowerbed 表示花 ...

  6. golang切片简介

    目录 创建 创建与初始化 make函数创建 初始化创建 空切片与nil 创建共享底层数组的切片 访问 迭代 不定参数传递 操作 扩容 插入元素 尾部插入 头部插入 中间插入 删除元素 尾部删除 头部删 ...

  7. golang切片slice详解:介绍、内存分析、定义、遍历、切片可以继续切片、切片可以动态增长、切片的拷贝及底层原理

    切片的引入 [1]切片(slice)是golang中一种特有的数据类型 [2]数组有特定的用处,但是却有一些呆板(数组长度固定不可变),所以在 Go 语言的代码里并不是特别常见.相对的切片却是随处可见 ...

  8. golang 切片 接口_Go 经典入门系列 18:接口(一)

    点击上方蓝色"Go语言中文网"关注,每天一起学 Go 欢迎来到 Golang 系列教程[1]的第 18 个教程.接口共有两个教程,这是我们接口的第一个教程. 什么是接口? 在面向对 ...

  9. golang 切片 截取参数 简介

    以 s := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}为例 建议:做slice截取时建议用两个参数,尤其是从底层数组进行切片操作时,因为这样在进行第一次append操作时 ...

最新文章

  1. 【Python】学习笔记总结9(数据库与Python交互)
  2. C# 面向对象版 Windows挖雷 v0.8 release 非FloodFill算法解
  3. voltdb mysql_MySQL/HandlerSocket和VoltDB:NoSQL的竞争者
  4. Log4j Bug –减慢您的应用程序
  5. 【剑指offer】面试题38:字符串的排列(Java)
  6. python wheel使用_【转载】Python,使用Wheel打包
  7. 最大公约数 和 最小公倍数
  8. 新版DevEco不用USB线下载程序
  9. zynqpl端时钟_zynq中纯PL编程 - CSDN博客
  10. C# in depth (第六章 实现迭代器的捷径)
  11. 全局光照模型与Rendering Equation(全局光照的最为基础的核心理论) .
  12. 如何解决System.Web.HttpRequestValidationException的异常
  13. js一行四个 超过自动换行_干货!零基础学JavaScript要掌握的四个基本常识
  14. 传华为3com将被17亿美元出售 挑战思科?
  15. 爆销产品标题怎么写_7个让销量暴增的商品标题文案套路
  16. Google Daydream实验室:VR设计的三大要素
  17. 三极管开关电路_利用三极管设计开关电路
  18. 无水印火山小视频下载教程
  19. ABAP 客户主数据批量导入
  20. dlang,不必要串插件的类型提升.

热门文章

  1. vue笔记(二)Vue-class与style、事件、计算属性、数据监听、指令+自定义指令、过滤器
  2. 用递归方式判断字符串是否是回文
  3. HTML5 之 简单汇总
  4. Cisco TrustSec(理解)
  5. CPU-内存-IO-网络调优
  6. oracle快速插入大量数据
  7. sql server 自定义函数的使用
  8. 即时聊天IM之二 openfire 整合现有系统用户
  9. php访问服务器文件路径,PHP与服务器文件系统的简单交互
  10. linux制作一键恢复,Linux/Centos Mondo 一键部署、镜像恢复,快速部署