leetcode 355设计推特
Problem: 355. 设计推特 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798type Twitter struct { userMap map[int]*User}type User struct { userId int followees map[int]bool tweets []*Tweet}type Tweet struct { tweetId int time int userId int}// 推特时间排序var tweetCount intfunc Constructor() Twitter { return...
设计题思考
设计数据结构和算法时,通常需要遵循以下步骤来解决问题: 理解问题:首先,彻底理解题目要求做什么,包括输入、输出、限制条件等。 确定需求:明确需要哪些数据结构来存储信息,以及如何使用这些数据结构来满足题目的需求。 设计数据结构: 确定实体类型:例如,用户(User)、推文(Tweet)等。 确定实体之间的关系:例如,用户可以发布推文,用户可以关注其他用户。 定义方法:根据题目要求,设计所需的方法或函数,如发布推文、关注用户、取消关注和获取信息流。 实现逻辑:为每个方法设计逻辑,考虑如何使用数据结构来实现题目要求的功能。 考虑边界条件和错误处理:确保你的代码可以处理各种边界情况和潜在的错误。 优化:在满足基本要求后,考虑是否可以优化代码,比如提高时间效率或空间效率。 对于LeetCode题目...
如何使用递归
123456789101112131415func 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 { return nil } mid := (left + right)/2 root := &TreeNode{nums[mid],nil,nil} root.Left = traversal(nums,left,mid-1) // 把后边 root 节点添加到当前root left 左节点上 root.Right = traversal(nums,mid+1,right) // 把后边 root 节点添加到当前root right 左节点上 ...
goland中debug 无法显示全局变量解决
实际只会有局部变量,没有全局变量test 解决方法: 右键 选择+ New Watch ; 或者 按按键 Insert 添加变量 test 即可 添加成功之后每次单步执行都会显示变量结果:
golang 中格式化打印单个字符
在Go语言中,fmt.Printf 函数是用来格式化输出的,它接受一个格式化字符串作为第一个参数,后面跟着相应的参数。格式化字符串中可以包含一些格式化动词(也称为转换说明符),它们定义了如何将相应的参数值转换为字符串并输出。 %c 是一个格式化动词,它指定了对应的参数应该被转换为一个单一的Unicode字符并输出。当你在 fmt.Printf 中使用 %c,并且传入一个整数(int 类型)时,它会将该整数值转换为该整数值对应的Unicode码点的字符。 例如: 12345678package mainimport "fmt"func main() { var codePoint int = 65 // ASCII码中A的码点 fmt.Printf("%c\n", codePoint) // 输出: A} 在这个例子中,变量 codePoint 的值为 65,它是大写字母 “A” 在ASCII编码中的码点。fmt.Printf("%c\n", codePoint)...
golang slice无法添加指针
在Go语言中,指针是一种存储变量内存地址的数据类型。当你有一个指向int的指针,比如timePtr *int,你可以通过*timePtr来访问和修改指针指向的值。然而,指针本身是一个值类型,它存储的是变量的内存地址,而不是变量本身。 在你提供的add函数中: 1func add(timePtr *int) { *timePtr += 1 } //...
计算机网络概览
...
ssh 隧道 端口转发
使用SSH端口转发 如果物理机在远程,你需要使用SSH的端口转发功能来将远程物理机上的容器端口转发到你的PC上。这可以通过使用-L参数实现,如下所示: 1ssh -L 本地端口:localhost:13579 用户名@物理机IP 其中“本地端口”是你希望在PC上使用的端口号,而“物理机IP”是物理机的IP地址。 例如:我想直接登录110.43.203.19 上其中一个容器,而其没有放开对应容器的端口,我们就可以将端口映射到本地PC; 123ssh -L 13579:localhost:13579 root@110.43.203.19 -p 30005 // ssh -p 13579 root@localhost
leetcode 208. 实现 Trie (前缀树)
Trie [traɪ] 读音和 try 相同,它的另一些名字有:字典树,前缀树,单词查找树等。 208. 实现 Trie (前缀树) - 力扣(LeetCode) Trie 是一颗非典型的多叉树模型,多叉好理解,即每个结点的分支数量可能为多个。 为什么说非典型呢?因为它和一般的多叉树不一样,尤其在结点的数据结构设计上,比如一般的多叉树的结点是这样的: 12345678type TrieNode struct { Value int Next *TrieNode} 而 Trie 的结点是这样的(假设只包含’a’~’z’中的字符): 12345678type TrieNode struct { children [26]*TrieNode isEnd ...
Golang slice作为参数传递给函数需要使用指针
123456789101112131415161718func combine(n int, k int) [][]int { res := [][]int{} dfs(1,n,k,&res,&[]int{}) return res}func dfs(s, n, k int, res *[][]int, item *[]int) { if len(*item) == k { *res = append(*res, append([]int{}, *item...)) return } for i := s; i <= n-(k-len(*item))+1; i++{ *item = append(*item, i) dfs(i+1, n, k, res, item) *item = (*item)[:len(*item)-1] ...