Go语言删除指定索引元素
在Go语言中,可以使用切片的操作和 append 函数来删除特定索引的元素。 以下是一个示例代码,它演示了如何删除切片中索引值为 i 的元素: 12345678910111213package mainimport "fmt"func main() { a := []int{1, 2, 3, 4, 5} i := 2 // 要删除的索引 // 将要删除的元素从原始切片中删除,并返回剩下的元素组成的新切片 b := append(a[:i], a[i+1:]...) fmt.Println(b) // 输出 [1 2 4 5]} 在上面的代码中,我们定义了一个整数切片 a,包含 1、2、3、4、5 五个元素。然后我们定义要删除的元素的索引位置 i 为 2(即第三个元素)。 接下来,我们使用 append 函数和切片切割(slice expression)操作,在 a[:i] 和 a[i+1:] 中间加入空白符号 (…),以便将包含 a[i] 元素的子切片略过。也就是说,这个表达式等价于前...
Go语言指定索引插入元素
在Go语言中,可以使用切片(slice)的 append 函数和切片的切割(slice expression)操作来在指定索引位置插入元素。 下面是一个示例代码,它插入一个元素到切片的第二个位置: 12345678910package mainimport "fmt"func main() { a := []int{1, 2, 3, 4} i := 1 // 要插入的位置 b := append(a[:i], append([]int{5}, a[i:]...)...) // 在切片的第二个位置插入数字5 fmt.Println(b) // 输出 [1 5 2 3 4]} 在上面的代码中,我们首先定义了切片 a,包含整数 1、2、3、4。然后我们定义要插入的位置 i 为第二个元素(也就是索引值为 1)。 接着,在 append 函数中,我们将原始切片 a 切割成两部分:从起始位置到插入位置的子切片 a[:i],和从插入位置到末尾的子切片...
leetcode 108.将有序数组转换为二叉搜索树
108. 将有序数组转换为二叉搜索树 - 力扣(Leetcode) 递归解法注意递归函数的返回值和输入值,确定终止条件,确定单层递归逻辑注意递归函数定义,严格按照定义调用递归使用前序遍历 中左右 123456789101112131415161718192021222324/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */func sortedArrayToBST(nums []int) *TreeNode { return traversal(nums,0,len(nums)-1)}// 定义:返回nums root 节点func traversal(nums []int,left int , right int) *TreeNode{ if left > right { ...
Go语言-接口
在 Go 语言中,接口(interface)是一种类型,它定义了对象的行为规范,即定义了一组方法签名,而不需要指定具体的实现。接口使得不同的类型可以通过实现相同的方法集合来进行互换使用。 以一个简单的例子来说明接口的作用,在下面这段代码中,接口Printer定义了一个打印的方法Print(): 123456789101112131415161718192021222324type Printer interface { Print()}type User struct { name string}func (u User) Print() { fmt.Println(u.name,"我爱加班")} func printAll(ps []Printer) { for _, p := range ps { p.Print() }}func main() { var ps []Printer ps =...
Go语言-多态
Go语言中没有类,我们可以使用结构体作为对象,来绑定对应的方法。而接口是功能的抽象,是方法的集合。 我们来实现这样一个例子: 实现猫和狗两个对象,并且他们都有动作:叫,但叫声不同。再实现一个对象鸟,他除了叫,还会飞。 下面是基于Go语言,实现题目要求的代码: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647package mainimport "fmt"type Animal interface { Cry()}type Cat struct{}func (c Cat) Cry() { fmt.Println("喵喵喵")}type Dog struct{}func (d Dog) Cry() { fmt.Println("汪汪汪")}type Bird...
波纹
波光粼粼
Leetcode 513.找树左下角的值
513. 找树左下角的值 - 力扣(Leetcode) 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root = [2,1,3]输出: 1 示例 2: 输入: [1,2,3,4,null,5,6,null,null,7]输出: 7 提示: 二叉树的节点个数的范围是 [1,104] -2^31 <= Node.val <= 2^31 - 1 思考本题可以转化为什么呢? 1.最后一层的最左边的数值,递归的话需要记录最后一层,并且记录最左边的值2.如果是迭代呢?这个就更适合了,只要记录每层迭代中的第一个值,并且不断更新更大的值就好。 代码实现1.递归 12345678910111213141516171819202122var depth int // 全局变量 最大深度var res int // 记录最终结果func findBottomLeftValue(root *TreeNode) int { depth, res = 0,...
Leetcode 404.左叶子之和
123456789101112131415161718192021222324252627/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */func sumOfLeftLeaves(root *TreeNode) int { // 递归 res := 0 // 终止条件 if root == nil { return 0 } leftNode := root.Left leftNodeVal := sumOfLeftLeaves(root.Left) // 左 rightNodeVal := sumOfLeftLeaves(root.Right)// 右 if leftNode != nil && leftNode.Left == nil && leftNode.Right ==...
Leetcode 257.二叉树的所有路径
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */var res []stringvar path []stringfunc binaryTreePaths(root *TreeNode) []string { res = make([]string,0) path = make([]string,0) if (root == nil) { return res } backTracking(root) return res}func backTracking(root...