(一)Go语言使用:常用API

Math

import(
    "math"
)
// 比较大小 a,b float64 其他的最大最小得自己实现
Math.max(a,b)
Math.min(a,b)
// 最大数 最小数
math.MaxInt64
math.MinInt64
​
math.Sqrt(5) // 开方 返回float64
math.Pow(a,b) // 求幂 参数都是float64

sort & 排序

// 排序
sort.Ints(nums)
sort.Float64s(floats)
sort.Strings(strs)
sort.Float64sAreSorted(floats)
// 自定义排序
sort.Slice(stus, func(i, j int) bool {
    return stus[i].Name < stus[j].Name
})
// 排序搜索
// [0,n)中取出一个值index,index是最小的能使f为true的值,多用于排序好的数组查询
sort.Search(len(matrix),func(i int) bool{return matrix[i][0]>target})
// 返回等于x的下标中 最小的那个
// 或者 a < x < b b的下标
// 没找到会返回 len(g)
sort.SearchInts(g, x)

sort.IntSlice详解 自定义sort.IntSlice

a := sort.IntSlice{2, 8, 3, 7, 9, 4, 1, 6} // []int类型 可排序
a.Sort() // 调用排序方法 从小到大

初始化

// 切片
ans := make([][]int, 0)
// map
m:=map[byte]int{}

Map

m:=map[byte]int{}
m:=map[byte]int{'c':1,'a',2}
delete(m,'k')
v,ok := m[pre-k]
map['1'] // 如果找不到,返回0
for key, value := range occurrences {
    heap.Push(h, [2]int{key, value})
}

Slice

var q []int // 可以用append
q := make([][]int, 0)
q := []int{}
var (
    res    []int
    q      []int
    indexs []int
    edges  [][]int
)var mapping = [...]string{"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"}
q = append(ans,i)
q = ans[:len(q)-1]
copy(q,ans) // 把ans复制给q
ans = append(ans, append([]int{}, path...)) // 数组复制
for i,v := range q
for i := range q

Heap

优先队列

23. 合并 K 个升序链表

示例:最小堆

295. 数据流的中位数

import (
    "container/heap"
)
// 使用
h := &hp{}
heap.Init(h) // 堆化,注意这里是传指针
heap.Push(h, [2]int{ke, v})
if h.Len() > k {
    heap.Pop(h)
}
*h[0] // 第0个是最小的(最小堆)// 需要重写的方法 定义和方法 最小堆底层实际上是一个从大到小排序的数组
type hp []int
func (h hp) Len() int           { return len(h) }
func (h hp) Less(i, j int) bool { return h[i] < h[j] } // 最小堆
func (h hp) Swap(i, j int)      { h[i], h[j] = h[j], h[i] }
func (h *hp) Push(v interface{}) { h = append(h, v.(int)) }
func (h *hp) Pop() interface{} { // 每次push和pop的时候都会刷新堆
    a := *h
    v := a[len(a)-1]
    *h = a[:len(a)-1]
    return v
}

String

s string
len(s)
string(b) // byte[] -> string
_, c := range s // string底层是rune[]
byte(c) // rune -> byte

转化

float64(c1+c2)/2.0 // int->float64
1 + int(c -'0') // byte->int
"1"+string(c) // byte->string

For

for i++;nums[i]<partition;i++{} // = do i++; while();

位运算

a^a=a
0^a=a
single ^= num

strings.Builder{}

import(
    "strings"
)
​
temp := strings.Builder{}
temp.WriteString('s') // 写入当前字符串
temp.String() // 更新当前字符串

键盘输入

reader := bufio.NewReader(os.Stdin)
reader.ReadString('\n')

atomic

atomic.AddInt64(&p.size, 1)
atomic.LoadInt64(&p.cap) // 读取
  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值