做网站美工收费,卓创源码网,wordpress快速加载,小视频哪个网站比较好关于切片越界的问题#xff0c;这个解法给了参考
测试用例
0,0,1,0,1 从这个测试用例中#xff0c;我们可以看到一次性就写出下面的if语句是有一定难度的
第一个元素就是0#xff0c;所以第一个条件成立后#xff0c;进行i-1判断就越界了。但是这个0是可以改为1的#…关于切片越界的问题这个解法给了参考
测试用例
0,0,1,0,1 从这个测试用例中我们可以看到一次性就写出下面的if语句是有一定难度的
第一个元素就是0所以第一个条件成立后进行i-1判断就越界了。但是这个0是可以改为1的原因是i1位置是0符合题目要求。所以应先判断i1位置再判断i-1i1 len(flowerbed) flowerbed[i1] 0。关于这条语句充分揭示了什么是。当第一个条件不成立我们就不进行第二次判断。这一点很重要|| i1 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 的值((i1 len(flowerbed) flowerbed[i1] 0) || i1 len(flowerbed)) // 检查 i1 的值((i-1 0 flowerbed[i-1] 0) || i-1 0) { // 检查 i-1 的值flowerbed[i] 1n--if n 0 {return true}}}return n 0
}