Golang | 二叉树结构生成及打印
背景树结构是一种常见数据结构,树结构其实是一种特殊的链结构,现在学习一下最基本的生成和打印功能。代码创建及打印树结构,使用切片创建树,支持使用nil来剪枝,即部分分支不创建。packagema···
数据结构 1103 2021-08-03
有一个已经排序的数字,要求将数组中重复的值删除,不能创建另一个数组,删除后返回新数组长度
在Golang中一般以切片代替数组,切片是引用,数组是值
package main import ( "fmt" ) func main() { input := []int{1, 1, 3, 3, 3, 5, 6, 6, 6, 9, 9} num := removeDuplicates(&input) fmt.Println(num, input) } // 参数需使用引用形式 func removeDuplicates(nums *[]int) int { result := *nums // 防止边界越位 if result == nil { return 0 } left := 0 for _, v := range result { if result[left] == v { continue } left++ result[left] = v } *nums = result[:left+1] return left + 1 }
说明:
需要注意边界问题,当切片未定义需防止越界
切片虽然是引用,作为参数时只能修改里面的值,但切片本身是无法替换的,所以参数应该使用切片引用而不是切片本身