605. 种花问题 golang 切片越界问题和逻辑操作符的思考
关于切片越界的问题,这个解法给了参考
测试用例
0,0,1,0,1
从这个测试用例中,我们可以看到一次性就写出下面的if语句是有一定难度的
- 第一个元素就是0,所以第一个条件成立后,进行i-1判断就越界了。但是这个0是可以改为1的,原因是i+1位置是0,符合题目要求。所以应先判断i+1位置再判断i-1
- i+1 < len(flowerbed) && flowerbed[i+1] == 0。关于这条语句充分揭示了什么是&&。当第一个条件不成立,我们就不进行第二次判断。这一点很重要
- || i+1 >= len(flowerbed)) &&
- || i-1 < 0)
- 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 切片越界问题和逻辑操作符的思考相关推荐
- 665. 非递减数列 golang 切片越界问题的探讨(二)
思路 给定一个长度为 n 的整数数组,你的任务是判断在最多改变 1 个元素的情况下,该数组能否变成一个非递减数列. 我们是这样定义一个非递减数列的: 对于数组中所有的 i (1 <= i < ...
- 通俗易懂:贪心算法(三):习题练习 (力扣605种花问题、122买卖股票的最佳时机)
看完本文,可以顺便解决leetcode以下两个题目: 605.种花问题
- golang切片转为字符串,字符串转切片
golang切片转为字符串,字符串转切片 package mainimport ("fmt""strings" )func main() {s := []str ...
- 【贪心】605. 种花问题
605. 种花问题 难度简单381 假设有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给你一个整数数组 flowerbed 表 ...
- 605. 种花问题(贪心算法)
605. 种花问题 题目描述: 假设有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给你一个整数数组 flowerbed 表示花 ...
- golang切片简介
目录 创建 创建与初始化 make函数创建 初始化创建 空切片与nil 创建共享底层数组的切片 访问 迭代 不定参数传递 操作 扩容 插入元素 尾部插入 头部插入 中间插入 删除元素 尾部删除 头部删 ...
- golang切片slice详解:介绍、内存分析、定义、遍历、切片可以继续切片、切片可以动态增长、切片的拷贝及底层原理
切片的引入 [1]切片(slice)是golang中一种特有的数据类型 [2]数组有特定的用处,但是却有一些呆板(数组长度固定不可变),所以在 Go 语言的代码里并不是特别常见.相对的切片却是随处可见 ...
- golang 切片 接口_Go 经典入门系列 18:接口(一)
点击上方蓝色"Go语言中文网"关注,每天一起学 Go 欢迎来到 Golang 系列教程[1]的第 18 个教程.接口共有两个教程,这是我们接口的第一个教程. 什么是接口? 在面向对 ...
- golang 切片 截取参数 简介
以 s := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}为例 建议:做slice截取时建议用两个参数,尤其是从底层数组进行切片操作时,因为这样在进行第一次append操作时 ...
最新文章
- 【Python】学习笔记总结9(数据库与Python交互)
- C# 面向对象版 Windows挖雷 v0.8 release 非FloodFill算法解
- voltdb mysql_MySQL/HandlerSocket和VoltDB:NoSQL的竞争者
- Log4j Bug –减慢您的应用程序
- 【剑指offer】面试题38:字符串的排列(Java)
- python wheel使用_【转载】Python,使用Wheel打包
- 最大公约数 和 最小公倍数
- 新版DevEco不用USB线下载程序
- zynqpl端时钟_zynq中纯PL编程 - CSDN博客
- C# in depth (第六章 实现迭代器的捷径)
- 全局光照模型与Rendering Equation(全局光照的最为基础的核心理论) .
- 如何解决System.Web.HttpRequestValidationException的异常
- js一行四个 超过自动换行_干货!零基础学JavaScript要掌握的四个基本常识
- 传华为3com将被17亿美元出售 挑战思科?
- 爆销产品标题怎么写_7个让销量暴增的商品标题文案套路
- Google Daydream实验室:VR设计的三大要素
- 三极管开关电路_利用三极管设计开关电路
- 无水印火山小视频下载教程
- ABAP 客户主数据批量导入
- dlang,不必要串插件的类型提升.