一、高频题集

1、无重复字符的最长子串
2、简化路径
3、复原 IP 地址
4、三数之和
5、岛屿的最大面积
6、搜索旋转排序数组
7、朋友圈
8、接雨水
9、反转链表
10、两数相加
11、合并两个有序链表
12、合并 K 个排序链表
13、买卖股票的最佳时机
14、买卖股票的最佳时机 II
15、最大子序和
购买联系微信:Lzzzzzz63
16、最小栈
17、LRU 缓存机制
18、寻找两个有序数组的中位数
19、最长回文子串
20、合并两个有序数组
21、整数反转
22、排序链表
23、子集
24、全排列
25、实现二叉树中序遍历(不使用递归)
26、爬楼梯(斐波那契数列)
27、滑动窗口的最大值
28、判断单链表成环与否?
29、如何从一百万个数里面找到最小的一百个数,考虑算法的时间复杂度和空间复杂度30、手写数组实现队列
31、java 排序算法和查找算法 (写出你所知道的排序算法及时空复杂度,稳定性)
http://www.jianshu.com/p/8c915179fd02
http://xiaojun-it.iteye.com/blog/2291852
二、次高频题集 (⭐⭐)
1、算法熟悉么?给了一个二叉排序树,出了一个给定节点找到它的下一个元素(指的是大小顺序的下一个)的算法题。
2、x 个苹果,一天只能吃一个、两个、或者三个,问多少天可以吃完
3、求二叉树第 n 层节点数
4、如何设计一个抽奖系统,比如满 200 抽 20,满 500 抽 50。
5、求无序数组中的中位数
6、二叉树深度算法
7、堆和栈在内存中的区别是什么(数据结构方面以及实际实现方面)
8、最快的排序算法是哪个?给阿里 2 万多名员工按年龄排序应该选择哪个算法?9、堆和树的区别?
10、求 1000 以内的水仙花数以及 40 亿以内的水仙花数;
11、子串包含问题(KMP 算法)写代码实现;
12、万亿级别的两个 URL 文件 A 和 B,如何求出 A 和 B 的差集 C,(Bit 映射->hash 分组->多文件读写效率->磁盘寻址以及应用层面对寻址的优化)
13、蚁群算法与蒙特卡洛算法;
14、百度 POI 中如何试下查找最近的商家功能(坐标镜像+R 树)。
15、5 枚硬币,2 正 3 反如何划分为两堆然后通过翻转让两堆中正面向上的硬币和反面向上的硬币个数相同;
16、时针走一圈,时针分针重合几次;
17、N * N 的方格纸,里面有多少个正方形;
18、请在 100 个电话号码找出 135 的电话号码 注意 不能用正则,(类似怎么最好的遍历LogGat日志)
19、一个青蛙跳台阶,一次可以跳一步和两步,如果一共有 N 个台阶,可以有几种跳法?20、写代码实现队列的基本操作,外加查找最大值;
21、图:有向无环图的解释
22、二叉树 深度遍历与广度遍历
23、B 树、B+树
24、密码学中两大加密算法是什么
25、判断环(猜测应该是链表环)
购买联系微信:Lzzzzzz63
26、有一个 List 列表,去掉列表中的某一 Object 对象,如何在 for 循环里面写;27、设计移动端的联系人存储与查询的功能,要求快速搜索联系人,可以用到哪些数据结构?(二叉排序树,建立索引)
28、一道简单不易的算法题
int a = 10;
int b=5;
怎么在不引入其他变量的情况下,让 a 和 b 互换?

public class Test {
int a = 10;
int b=5;
public static void main(String[] args) {
a = a+b;
b=a-b;
a =a-b;
System.out.println("b="+b);
System.out.println("a="+a);
}
}
----输出:
b=10
a=5

29、回形打印二维数组
30、二叉树,给出根节点和目标节点,找出从根节点到目标节点的路径
31、一个无序,不重复数组,输出 N 个元素,使得 N 个元素的和相加为 M,给出时间复杂度、空间复杂度。手写算法
32、两个不重复的数组集合中,求共同的元素。
33、上一问扩展,海量数据,内存中放不下,怎么求出。
34、从长度为 m 的 int 数组中随机取出 n 个元素,每次取的元素都是之前未取过的,如何优化35、逆序一个字符串,不能调用 String 的 reverse 方法(考察编码风格)
36、算法:将一个有序数组去重得到一个新数组(空间复杂度为 O(N))
37、算法:如何从 1T 的无序数组(长度为 n)里面找出前 k 大的数据,复杂度要求为O(logN)
38、m * n 的矩阵,能形成几个正方形(2 * 2 能形成 1 个正方形,2 * 3 2 个,3 * 3 6 个)计数的关键是要观察到任意一个倾斜的正方形必然唯一内接于一个非倾斜的正方形,而一个非倾斜的边长为 k 的非倾斜正方形,一条边上有 k-1 个内点,每个内点恰好确定一个内接于其中的倾斜正方形,加上非倾斜正方形本身,可知,将边长为 k 的非倾斜正方形数目乘以k,再按k求和即可得到所有正方形的数目。
设 2≤n≤m,k≤n-1,则边长为 k 的非倾斜有
(n-k)(m-k)个,故所有正方形有
∑(m-k)(n-k)k 个
例如 m=n=4
正方形有 331+222+113=20 个。
39、面试头条的时候在线编程:从上到下从左到右输出二叉树
购买联系微信:Lzzzzzz63
40、从长度为 m 的 int 数组中随机取出 n 个元素,每次取的元素都是之前未取过的,如何优化41、逆序一个字符串,不能调用 String 的 reverse 方法(考察编码风格)
42、算法:将一个有序数组去重得到一个新数组(空间复杂度为 O(N))
43、算法:如何从 1T 的无序数组(长度为 n)里面找出前 k 大的数据,复杂度要求为O(logN)
44、堆和树的区别
45、堆和栈在内存中的区别是什么(解答提示:可以从数据结构方面以及实际实现方面两个方面去回答)?
46、什么是深拷贝和浅拷贝
47、手写链表逆序代码
48、讲一下对图的理解
49、手写一段代码,如何找出一段字符串中,出现最多的汉字是哪个?
50、单向链表逆序。
51、实现一个数组插入。(处理异常判别,不使用 Collections 相关接口)。52、找到无序数组的最大连续求和。
53、找到多个员工的共同繁忙时段。
https://github.com/banking/algorithm-dish/blob/master/algorithm-question/
src/main/java/TimeAirbnb.java
54、输出一个集合{A,B,C,D}的全部子集**
55、手写代码:遍历文件目录;
56、电梯运行的算法分析;
57、手写实现单链表的 get 操作;
58、100 个数字排序怎么做?
59、一个集合里有 1000 万个随机元素,如何快速计算他们的和(我特喵的以为是考算法,想半天没有 O(n)以下的方案,结果他居然说多线程)
60、切饼问题:1 刀切 2 块,2 刀切 4 块,10 刀最多切几块。
61、追击问题:2 辆火车相向同时出发,一个从 A 点出发,速度是 30km/h,一个从B 点出发,速度是 20km/h,A、B 之间的距离是 S,同时一只鸟也从 A 点出发,速度是 50km/h,鸟在两辆火车间折返飞行,问三者相遇时,鸟飞的总路程。
62、算法:给定一段已排好序的数列,数列中元素有可能是重复的,找出数列中目标值的最小索引,要求不能用递归,只能用循环。
63、一个文件中有 100 万个整数,由空格分开,在程序中判断用户输入的整数是否在此文件中。说出最优的方法
64、2000 万个整数,找出第五十大的数字?
65、烧一根不均匀的绳,从头烧到尾总共需要 1 个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢?
66、求 1000 以内的水仙花数以及 40 亿以内的水仙花数
67、称重问题:10 个箱子,每个箱子里都有若干砖头,其中有一个箱子里每个砖头重9 克,其他的箱子里的砖头每个重 10 克,给你一个秤,要求只能用一次称重找出砖头重9 克的箱子。68、时针走一圈,时针分针重合几次
69、N*N 的方格纸,里面有多少个正方形
70、标号 1-n 的 n 个人首尾相接,1 到 3 报数,报到 3 的退出,求最后一个人的标号71、给定一个字符串,求第一个不重复的字符 abbcad -> c
72、上网站写代码,如下: 有一个容器类 ArrayList,保存整数类型的元素,现在要求编写一个帮助类,类内提供一个帮助函数,帮助函数的功能是删除 容器中<10 的元素。73、写代码,LeetCode 上股票利益最大化问题
74、写代码,剑指 offer 上第一次只出现一次的字符
75、算法:连续子数组的最大和
76、子串包含问题(KMP 算法)写代码实现
77、ViewGroup 的层级深度,转换为二叉树的层级深度
78、String 字符串的数字相加
79、使用三个线程顺序打印有序的数组
购买联系微信:Lzzzzzz63
80、给定一个有序的数组和目标数,找出与目标数最近接的 index,要求复杂度是log(n)的时间复杂度
81、给定一个二叉树和一个目标数,在二叉树中是否存在一条路径的所有节点的和与目标数是相同的 case,并且打印。
82、二叉树,读取每一层最右边的节点
83、int 数组,除了一个数字外,其他数字都出现两次,找出这个只出现一次的数字84、一个类,内部有一个链表的数据结构,实现 void add(Node n)和 void remove(int index)的函数
85、手写消费者生产者模型的代码
86、一个无序的 int 数组,给一个 target 数字,找出数组中两个数字相加为target,并输出坐标
87、数组中存有 1-3 的三种数字,例如[1,2,3,1,2,2,1,3,3],将其排序为[1,1,1,2,2,2,3,3,3],要求时间复杂度,后续将内容变为一个对象,继续排序
88、"之"字形打印二叉树
89、1~100 盏灯,都是亮的,第一次将能被 1 整除的数的灯按下,变暗,第二次将能被2 整除的数的等按下,变亮,第三次将能被 3 整除的数的等按下,变暗…第 100 次将能被100 整除的数的灯按下,问,最后有多少盏灯是亮的。
90、实现一个 o(n)复杂度的堆和最大数。
91、实现一个数组的窗口扫描算法。
92、识别一个字符串是否是 ipv4 地址。
93、o(n)复杂度实现偶数递增奇数递减单向链接排序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值