算法岗面经总结-今日头条
算法题:
参考:https://www.cnblogs.com/DarrenChan/p/8779509.html
- 翻转二叉树
- 最大连续子串和
- 给一棵边权树树找到最大路径,要找到两个端点怎么办
- 给一个字符串和单词列表,判断字符串能不能由这些单词组成
- 给定一组股票的价格,最多买卖0一次,问最大收益
- !!!二叉树任意两个节点之间路径的最大长度
- 二叉树的深度
- lfu
- 一个链表 奇数位升序偶数位降序 让链表变成升序的
- 给你一个循环后的数组 比如 45123 问你恢复原数组 最少几步 原数组是升序的
- 一个数组 里面存着 1 -- 无穷大的数 但是他的十位数 比如 10 拆成了 1 和0 问你这样拆分的数组里 让你求i位置的数字是啥 数字肯定就是0-9的数
- !!! 0-25表示A-Z,给一个数字字符串,求有多少种解码方式
- 给定一个乱序的链表,现在有一个操作,可以把链表任意位置的值移动到链表的最后。求链表排序所需要的最少操作次数。
- 已知一个函数rand3() 可以等概率随机产生1,2,3,请实现函数rand7(),可以等概率随机产生1~7
- 当你在搜索框输入h的时候会出现一些h开头的单词,然后再输入一个a(ha),会出现ha开头的很多单词,现在给你一个词典,让你实现这个功能,当用户动态的输入字母时,跳出以此字符串为前缀的所有单词,要求时间复杂度最优
- 找一下两个节点的LCA
- !!!给出k对括号的全部正确匹配方案,如k=2,输出()(),(())
- 将一些柱子整齐的摆在一行(立着),高度存在数组height[]中,height[i]表示第i个柱子高为height[i],然后往凹下去的地方倒水,问一共能蓄多少单位水,比如[5,1,3,4,5,1,3],答案是7 2=9
- 快速排序
- 抛2k+1次硬币,问正面次数比背面多的概率是多大,并讲出数学证明思路
- 给N个数字,返回这N个数字能组成的所有二叉搜索树
- 给一个字符串,得到它字典序最大的子序列
- n个整数的无序数组,找到每个元素后面比它大的第一个数
- LRU
- 实现一个二叉树的持久化方案
- 实现二叉树的层序遍历
- 旋转打印矩阵
概率题
抛2k+1次硬币,问正面次数比背面多的概率是多大,并讲出数学证明思路。
解:2k+1次,所以正面反面次数肯定不相等,要不正面多,要不反面多。正面反面实力相同,所以1/2。
证明的话用古典概型,分母为C2k+1_i,i=0,1,...2k+1,分子为C2k+1_j,j = k+1,...2k+1,因为Cn_m = Cn_n-m,因此分子等于分母的一半