虽然之前有看过 slice / array 比较的文章,
但在写 leetcode 时还是碰到点小麻烦,
不知道该怎麽初始化多维 slice。
var variable_name [SIZE1][SIZE2]...[SIZEN] variable_type
i.e. var mat[2][3][4][5] int
有几个 []
就几维,不需要自己弄 nested array。
a = [3][4]int{
{0, 1, 2, 3} , /* initializers for row indexed by 0 */
{4, 5, 6, 7} , /* initializers for row indexed by 1 */
{8, 9, 10, 11} /* initializers for row indexed by 2 */
}
虽然多维 slice 宣告也是依据 []
有几个,
但动态分配空间的 slice 在需要指定 index 来填值时,
需要先初始化才不会 out of bound。
写 566. Reshape the Matrix 时发现 return type 是 [][]int
如果用 input 给的 r 和 c 来初始化一个 var res [r][c]int
,
就会是一个 array 而不是 slice,因此喷错。
目前我看到初始化多维 slice 最好的方法是用 make()
,会自动填上 int 的初始值 0,如下:
// 先做一个 r 大小的 2d slice
// 此时虽然已经宣告这个 slice 中每个元素也是一个 slice,但还没有 make 去保留空间,因此若要存取类似 reshapedMat[0][0] 会喷错
reshapedMat := make([][]int,r)
// reshapedMat 中每个元素都是大小为 c 的 slice
for i, _ := range mat {
reshapedMat[i] = make([]int, c)
}
[]
make
初始化,才能用 mat[0][0]
这种方法去存取并改值,不然就要用 append()
Python 虽然也要初始化才不会 out of bound,但 return 时不需要顾虑什麽...
被宠坏ㄌㄋ
<<: 〖按图施工保证完工〗Linux CentOS 7 建置 Laradock
烫伤了手停了几天,不过差不多 15 天好像就交代完所有的东西了。剩下的大部分是比较冷门,甚至是 Gr...
今天来讲解 this 相关的陷阱题 第一题 myName = '全域'; var person = ...
一个单调的网页,配上精美的背景图片将带来意想不到的惊艳,但在加入背景图片可不是这麽简单,今天来介绍关...
点击进入React源码调试仓库。 React在构建用户界面整体遵循函数式的编程理念,即固定的输入有固...
BOM,是 JavaScript 与浏览器沟通的桥梁,JavaScript 可以透过 BOM 对浏览...