1、反转链表
2、买股票的最佳时间
3、剑指 offer 原题:五张牌,其中大小鬼为癞子,牌面为 0,判断这五张牌是否能组成顺子,要求不排序只遍历一次
4、 给定一个字符串和一个字符,比如 “abcabca” 和 ‘a’,随机打印出其中一个 ‘a’ 的下标,保证每个下标输出的概率是一样的,不能开辟额外存储,字符串只能遍历一次
5、给定一个字符串打印所有的子串,要求不重复,重点是不重复,使用字典树判重
6、数组子区间的最大和?知道你肯定刷过这个题,再加一个条件:找到数组中的两个数 A 和 B,要求将 A 和 B 交换之后自区间和是最大的,输出 A、B 和 最大自区间和
7、 桌子上有一副牌,循环进行以下操作:(1)将顶部的牌放到桌上 (2)再将当前顶部的牌放入底部,循环到所有牌都放到桌上,假设最后放到桌子上的牌顺序是 13 12 11 … 1,问初始的牌堆是怎么放的
8、给定一个矩阵,从左上角开始只能往下或者右走,求到达右下角的最小权值路径
9、编程题:建堆过程
10、编程题:最小栈:在O(1)的时间复杂度内返回栈的最小元素。思路:两个栈,一个栈模拟普通的push、pop,getMin() 操作,一个栈用于存储最小值序列。
11、编程题:数组中除了两个数,其他树都出现偶数次,找出这两个只出现一次的数。二面我就答上来这一道题,哭惹
12、编程题:二叉树转双端链表,半个小时没写出来,,,
13、手写代码:找到数据流的中位数
14、算法判断是否是BST
15、给定一个二叉树,任意两个节点之间必然是有一条路径相通的,假定父节点和它的孩子节点的距离为单位1,求二叉树中相距最远的两个节点间的路径长度
16、求出两条链表相交的结点,说思路
17、后来中途又给了一道算法题,说出思路,不用写代码
给一串字符串,去掉其中的b,还有相连的ac
‘aabcd’->‘ad’,‘aacbd’->‘ad’,‘aaabbcc’->’ ’
18、给定一颗二叉树,求其中root的最长路径。所谓路径是指,联通两个结点的最小边数
19、给定数字字符串,用分为六部分,每部分0~600,输出所有可能的结果
20、手写快排 手写堆排
21、已知出栈序列求所有的入栈序列
22、写代码,假如给定一篇英文课文,a-zA-Z文章的长度为n然后需要保留k个字符剩下的字符间相对顺序不变,问怎么能使得字典序最大
23、写代码,字符串中的最长重复子串
24、nm的表格,从左上走到右下,每次只能往右或者往下一格,有几种不同的走法,没时间了写一下dp的方程
25、链表翻转
26、url—6位短地址的映射,lru算法
27、手撕全排列、手撕排序数组指定重复元素的起始索引和终止索引
28、写代码:一个二叉树,每个节点除了有左右子节点外,还有指向父节点的引用。给出一个节点,返回它在二叉树中中序遍历的下一个节点。
29、1->2->3->4->5->6这样一个链表,如何排序成1->6->2->5->3->4这种结构,注意是分别有序的,说一说思路
这道题没让编程就是说思路,注意观察也是部分有序。 1.两个队列实现,快慢指针找到中点然后,然后对后半部分进行反转 2.反转链表,然后类似于二路归并的感觉,只不过不需要互相比较,逐个结点接起来。 3.一个队列一个栈实现,进行反转。
30、将数组中的重复元素删除
[1,1,1,2,3,4,5,5,5,6,6]
[1,2,3,4,5,6]
求两个数的最小公倍数
31、算法:给一个0,1构成的二维数组,上下左右相连的1,构成一个岛,求岛面积
[[0,0,1,0,0,0,0,1,0,0,0,0,0],
[0,0,0,0,0,0,0,1,1,1,0,0,0],
[0,1,1,0,1,0,0,0,0,0,0,0,0],
[0,1,0,0,1,1,0,0,1,0,1,0,0],
[0,1,0,0,1,1,0,0,1,1,1,0,0],
[0,0,0,0,0,0,0,0,0,0,1,0,0],
[0,0,0,0,0,0,0,1,1,1,0,0,0],
[0,0,0,0,0,0,0,1,1,0,0,0,0]];
32、求不在数组中的最小正整数
33、手写mysql左连接查询,把表也模拟写出来,查询结果也写出来
35、写链表翻转(递归和非递归)
36、合并k个有序数组
37、生产者消费者模型的实现(堵塞队列,代码)
38、编程:链表对折(输入1-2-3-4-…-n, 输出1-n-2-n-1-3-…)
39、N个有序数组求交集 (一点小问题,让我回去再想下)
40、算法:给定一个矩阵,从左上角开始只能往下或者右走,求到达右下角的最小权值路径
41、算法:LRU写下大概的代码,单链表的回文判断要求O1空间
42、算法:求一棵树的镜像,给我一个List,User有自己的id和父亲的id,要我转成一棵树
43、算法:手写hashmap的put方法(不考虑扩容红黑的情况),单链表的反转,单链表每k个翻转(看我写太快加了一道,1-2-3-4-5-6-7,k为3的话要变成3-2-1-6-5-4-7,我的思路是每K个截断,挨个翻转最后合并,On的空间,面试官说可以的,后来看leetcode有O1的空间,逻辑比较绕)
44、算法:罗马数字字符串转阿拉伯数字(leetcode上有),递增重复数组找target出现的范围([0,1,1,1,2,3,4,4,5],target为1的话要输出1的起始和结束下标即1和3,我的做法是两次二分,二分有两个能解决所有问题的模板,不用自己试边界问题,在acwing上,我就是用的这个模板,yxc打钱)
45、编程题:判断一个链表是否是一个回文链表
46、编程题:多路归并
47、题目一:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
48、给定一个二叉树,原地将它展开为链表。
49、给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
50、合并两个有序链表。递归和非递归的实现。