Skip to content

Latest commit

 

History

History
106 lines (90 loc) · 4.44 KB

algorithm.md

File metadata and controls

106 lines (90 loc) · 4.44 KB

算法

  • 拓扑排序,三面是迪杰斯特拉
  • morris遍历二叉树
  • 二叉搜索树与给定值相差最小的节点
  • 相同连续01的个数
  • 字节-合并k个链表,
  • 字节-拓扑排序的问题
  • 二叉堆topk问题 数组原地右移k个位置二面问了一个把栈里元素排序问题
  • 荷兰国旗问题
  • []int{1,3,6,7,9,10} 元素有奇偶数,把奇数去掉,空间复杂度最小。
  • 现在有个登录日志,记录用户登录退出功能,请用一个算法实现任意时间段同时在线人数
  • 算法题,二叉树,不能取相邻节点,怎么取最大值
  • 二叉树非递归前序遍历
  • 二叉树两个节点的公共路径
  • 找到右边的数和左边的数的最大差值
  • 连续数组的最大和
  • 二叉搜索树第k大的节点
  • 大文件排序
  • 文件切分
  • 快排
  • 堆排序
  • 一个随机数生成器只有0和1 生成概率为p和1-p,要写一个随机数生成器,生成1和0的概率都为1/2
  • 写程序反转链表
  • 限流算法
  • 算法 将k个长度为n的有序数组排序
  • 二叉搜索树顺序输出
  • 二叉树镜像
输入4
/
2 7
/ \ /
1 3 6 9

输出4
/
7 2
/ \ /
9 6 3 1
func invertTree(root *TreeNode) *TreeNode {
if root == nil {
return nil
}

root.Left, root.Right = root.Right, root.Left
invertTree(root.Left)
invertTree(root.Right)

return root
}
  • https://mp.weixin.qq.com/s/dpwC4TAAO1CdlPWIC_KFUg
  • 算法题,最长连续子数组,输入[1,2,3,7,8,9,10],返回4,最长连续的的是7,8,9,10
  • 算法题: 生成一个随机数组,然后写一个nlogn的排序算法,然后写个二分搜索验证你排序的结果
  • 两个gorouite 交替打印奇偶数
  • 最大回文字符串求法
  • 检测链表是否存在环 双指针相遇
  • 排序算法 快排的实现
  • 台阶背包问题
  • 黑眼睛和红眼睛https://www.zhihu.com/question/21262930
  • 用1g内存来从1亿行字符串(32字节)里面找出不重复的行数
  • 字节
    • 一面算法:对一个链表增删改茶
    • 二面:组合求和
    • 三面:循环单调递增链表随机插入一个k

分布式算法

  • gossip协议有什么优势
  • 一致性hash原理

  • 什么是hash
哈希(Hash),也称散列,是将任意长度的消息压缩成固定长度的消息摘要的函数。哈希函数将输入数据(也称为消息或明文)转换成固定长度的输出值(也称为哈希值、消息摘要、数字指纹),并且具有以下特性:

相同的输入数据总是会生成相同的哈希值;
不同的输入数据生成的哈希值是不同的;
无法从哈希值中推出原始的输入数据;
即使输入数据只有微小的变化,其生成的哈希值也会有很大的不同。

哈希函数广泛应用于信息安全领域,例如数字签名、消息认证、密码学等方面。在计算机科学中,哈希函数也被用于数据结构的设计和优化,例如哈希表、布隆过滤器等。哈希函数的设计需要考虑到哈希冲突、哈希性能、哈希安全性等因素,以确保其具有高效性、安全性和可靠性。

  • hash冲突?怎么解决
哈希冲突指的是不同的数据在计算哈希值时产生了相同的哈希值,这可能会影响哈希表的性能和正确性。以下是几种常见的解决哈希冲突的方法:

链接法(Chaining):在哈希表中,每个桶都指向一个链表,哈希值相同的数据会被放到同一个桶中的链表里。这种方法可以通过增加桶的数量来减少冲突的概率。

开放地址法(Open Addressing):在哈希表中,哈希值相同的数据被放置到另一个可用的桶中,而不是使用链表。开放地址法有几种不同的变体,包括线性探测、二次探测和双重哈希等。

建立一个完美哈希函数:如果知道数据的范围,可以构建一个完美哈希函数,使得每个数据都映射到不同的哈希值,从而避免哈希冲突。但这需要预处理,并且在新数据到来时需要重新构建哈希表。

拉链再散列(Cuckoo Hashing):它通过将每个键哈希到两个不同的位置,如果冲突发生,将冲突键移动到它的另一个哈希位置,或者用冲突键占据其它冲突位置的键来避免冲突。

在实际应用中,不同的哈希表实现可能采用不同的方法来解决哈希冲突。选择哪种方法取决于实际应用的需求和数据特征

  • golang的map,是怎么解决hash冲突的?