Golang
winfield821
这个作者很懒,什么都没留下…
展开
-
【算法题】逐段反转链表
输入一个链表和逐段反转的长度,输出反转的结果。最后一段如果达不到给定长度,不反转。示例:输入链表“0->1->2->3->4->5->6->7”和长度 3,输出链表“2->1->0->5->4->3->6->7”。思路:从头开始逐段反转。// Package mainpackage mainimport "fmt"type Node struct { Val int Next *Node原创 2022-05-30 00:32:19 · 150 阅读 · 0 评论 -
【算法题】阿拉伯数字和中文数字转换
示例:输入12051,输出一万二千零五十一。package mainimport ( "fmt" "strings")var m = map[int]string{ 0: "零", 1: "一", 2: "二", 3: "三", 4: "四", 5: "五", 6: "六", 7: "七", 8: "八", 9: "九",}func transfer(num int) string { var res string yNum := num / 10000原创 2022-04-18 23:29:48 · 571 阅读 · 0 评论 -
【算法题】图的 DFS 和 BFS
package mainimport "fmt"type Node struct { data string next []*Node // 代表每个节点能够访问的结点,比如 v0 的 next 为 v1,v2,v3}var m map[string]boolfunc DFS(node *Node) { if node == nil || m[node.data] { return } fmt.Print(node.data, " ") m[node.data] ....原创 2022-04-04 00:09:27 · 355 阅读 · 0 评论 -
【算法题】Golang使用多协程按给定顺序打印多个数组
两个channel,一个写123,另一个写abc,最终输出a1b2c3。package mainimport ( "fmt" "sync")func main() { arr := []int{a, b, c} arr2 := []int{1, 2, 3} signalCh := make(chan int) signalCh2 := make(chan int) wg := sync.WaitGroup{} wg.Add(1) go func() { defer原创 2022-03-30 01:17:42 · 1003 阅读 · 0 评论 -
【算法题】tuple 保序的全排列
package mainimport ( "fmt")func combinations(inputs [][]string) []string { var res []string for i, input := range inputs { subCombinations := combinations(append(inputs[:i], inputs[i+1:]...)) first := input[0] secon...原创 2020-06-08 16:44:25 · 287 阅读 · 0 评论 -
【算法题】非负 int 型数据,二进制格式最高位 1 的位置
比如对于 6,输出应该是 3(6 的二进制表示是 110);对于 1956,输出应该是 11(1956 的二进制表示是 11110100100)。1、O(n) 复杂度func IdxOfHighestOne(value int) int { var res = 0 for value != 0 { res++ value = value >> 1 } return res}2、O(logn) 复杂度func I原创 2020-07-20 14:17:57 · 478 阅读 · 0 评论 -
Golang pprof 使用
什么是 Profile?在计算机性能调试领域里,profile就是对应用的画像,这里画像就是应用使用 CPU 和内存等情况,也就是说应用使用了多少 CPU 资源、都是哪些部分在使用、每个函数使用的比例是多少、有哪些函数在等待 CPU 资源等等。知道了这些,我们就能对应用进行规划,也能快速定位性能瓶颈。Golang 是一个对性能特别看重的语言,因此语言中自带了 profile的库,这篇文...原创 2020-02-05 18:18:33 · 11093 阅读 · 0 评论