收集、管理和分享有用的代码片段,提高开发效率
递归计算二叉树深度
����Qɕ�9�������ՍЁ�(%Y������(%1��Ѐ�Qɕ�9���(%I���Ѐ�Qɕ�9���)�()�չ�������Ѡ�ɽ�Ѐ�Qɕ�9�������Ё�(%���ɽ�Ѐ����($%ɕ��ɸ��(%�(%������Ѡ�����Ѡ�ɽ�й1��Ф(%ɥ�����Ѡ�����Ѡ�ɽ�йI���Ф(%���������Ѡ���ɥ�����Ѡ��($%ɕ��ɸ�������Ѡ����(%�(%ɕ��ɸ�ɥ�����Ѡ����)
网页重要性排序算法
func pageRank(graph map[int][]int, damping float64, eps float64) []float64 {
n := len(graph)
pr := make([]float64, n)
for i := range pr {
pr[i] = 1.0 / float64(n)
}
for {
netPr := make([]float64, n)
maxDiff := 0.0
for i := 0; i < n; i++ {
netPR[i] = (1.0 - damping) / float64(n)
for _, j := range graph[i] {
netPR[j] += damping * pr[i] / float64(len(graph[i]))
}
}
for i := range n {
diff := math.Abs(netPR[i] - pr[i])
if diff > maxDiff {
maxDiff = diff
}
}
pr = netPR
if maxDiff < eps {
break
}
}
return pr
}
数据库索引数据结构
���� ����9�������ՍЁ�(%��1��������(%���̀���mu���(%م�Օ̀��mu��ѕə�����(%�����ɕ��mt� ����9���)�()��� ����Qɕ�����ՍЁ�(%���ɕ�����(%ɽ�Ѐ����� ����9���)�()�չ����� ����Qɕ��������Ф�� ����Qɕ���(%ɕ��ɸ�� ����Qɕ�푕�ɕ�聑����ɽ��聹��9������Ք��)�()�չ�����9������1����������� ����9�����(%ɕ��ɸ�� ����9�����1���聥�1����������mu�����)�()�չ���Ѐ� ����Qɕ���M��ɍ����䁥�Ф����ѕə�����������(%���Ȁ��йɽ��(%��ȁ���Ȁ����($%����($%��ȁ��������ȹ���̤�����������ȹ����m�t��($$%���($%�(($%������ȹ��1�����($$%�����������ȹ���̤�������ȹ����m�t����($$$%ɕ��ɸ����ȹم�Օ�m�t����Ք($$%�($$%ɕ��ɸ���������͔($%�($%���Ȁ���ȹ�����ɕ�m�t(%�(%ɕ��ɸ���������͔)�()�չ���Ѐ� ����Qɕ���%�͕�С��䁥�а�م����ѕə������(%ɽ�Ѐ��йɽ��(%�������ɽ�й���̤���ȩй���ɕ��ā�($$���M���Ёɽ��(%�(($���%�͕�Ё��Ѽ����������)�
快速傅里叶变换实现
func fft(x []complex128, inverse bool) []complex128 {
n := len(x)
if n <= 1 {
return x
}
xEven := make([]complex128, n/2)
xOdd := make([]complex128, n/2)
for k := 0; k < n/2; k++ {
xEven[k] = x[2*k]
xOdd[k] = x[2*k+1]
}
yEven := fft(xEven, inverse)
yOdd := fft(xOdd, inverse)
y := make([]complex128, n)
var sign float64
if inverse {
sign = -1.0
} else {
sign = 1.0
}
var w complex128
for k := 0; k < n/2; k++ {
t := cmplx.Pol(cmplx.Pi(-sign*float64(k)/float64(n)))
w = complex.Cmpld(cos(t), sin(t))
y[k] = yEven[k] + w * yOdd[k]
y[k+n/2] = yEven[k] - w * yOdd[k]
}
return y
}
非对称加密算法实现
func genRSAKeypair(bitSize int) (*rsa.PrivateKey, error) {
p, err := crypto.GenPrime(1, bitSize/2)
if err != nil {
return nil, err
}
q, err := crypto.GenPrime(1, bitSize/2)
if err != nil {
return nil, err
}
n := new(big.Int).Mul(p, q)
d := new(big.Int*BIG)
return &rsa.PrivateKey{
PublicKey: rsa.PublicKey{N: n, E: 65537},
D: d,
Primes: []rsa.Prime{p: p, q: q},
}, nil
}
func rsaEncrypt(pubkey *rsa.PublicKey, plaintext []byte) ([]byte, error) {
msg := new(big.Int).SetBytes(plaintext)
cipher := msg.Exp(pubkey.E, pubkey.N)
return cipher.Bytes(), nil
}
密钥交换协议实现
func genParams(p big.Int, g big.Int) (*privateKey, *publicKey, error) {
privateKey, err := crypto.RandInt(big.NewInt(2), big.NewInt(p))
if err != nil {
return nil, nil, err
}
publicKey := new(big.Int).Exp(g, privateKey, p)
return privateKey, publicKey, nil
}
func genSharedKey(publicKey, privateKey, p *big.Int) *big.Int {
return new(big.Int).Exp(publicKey, privateKey, p)
}
高效管理您的代码片段,提高开发效率
通过关键字、语言或分类快速查找代码片段,支持模糊搜索和过滤功能
支持多种编程语言的语法高亮,使代码更加清晰易读
随时随地访问您的代码片段库,支持桌面和移动设备
浏览最受欢迎的代码分类