笔试面试高频算法题总结

经中遇到的题:

1、数组的逆序数

2、LRU //hashMap加双向链表,双向链表有头尾节点,

3、最长回文序列 leetocde 5

4、矩阵中的最长递增路径,可以上下左右一起都走; leetcode329

5、判断一个二叉树是另一个二叉树的子树

6、归并排序的时间复杂度 // NlongN

7、求给出01矩阵中的最大正方形面积(全为1) lc221

8、求二叉树中距离最远的节点 leetcode543

9、判断字符串是否为合法IPV4地址 lc468

10、数组值为1-n,各出现一次,先加入x(x也是1-n的范围),找出x

11、给定n,计算15n,不用+*/

12、给定字符数组chars,将其右移n位

13、100层楼,只有两个鸡蛋,找出鸡蛋会在哪一层楼被摔碎

14、reverse linked list in a group of k

15、如何空间O(0)实现两个数的互换

16、IP地址的Regex

17、the longest path in a binary tree  lc124

18、the largest consecutive sum in an array

19、LeetCode 41 Find mis sing positive

20、给一个小于一亿的中文数字字符串,转化成数字格式

21、一个数组,把所有的0都移动到末尾,还要保持顺序不乱 维持临界点j,如果当前遍历不是0,就和j互换

22、罗马数字转整数 leetcode13

23、二叉树的序列化和反序列化

24、输入一个数组,输出数组中满足条件的数字,条件为:数组中当前元素的值大于等于它前面所有的元素,小于等于它后面所有的元素。

25、给出一个数字,对数字的两位进行交换,只能交换一次,输出可能结果中的最小数字

26、输入一个字符串,字符串中字符全部为数字,在字符串中插入 '.' 使得结果为合法的ip地址,输出全部可能的结果

27、基数排序

28、链表是否为回文结构。不能用栈

29、最大不重复子串

30、复杂链表复制

31、长度为n的数组,元素大小是0~n-1,判断数组元素是否有重复的

32、list1/list2交替打印元素

33、36进制加法

34、合并区间

35、快排

36、生产者-消费者 模型

37、排序一个字符串时间要求O(n)

38、给一个有重复数字的数组,求集合{(a,b,c) | a+b+c=0}

39、两个栈实现队列

40、二叉树转化为双端链表

41、手写线程池

42、之字形打印二叉树

43、给定一个数组,调整该数组,使其满足堆的性质

44、给定n个单词,如果单词组成一致但是元素顺序不一致,该对单词为同位词,例如:abc,bca为同位词.求所有同位词的集合输出

45、链表,两个链表的公共点

46、二叉树的后续遍历非递归形式

47、买卖股票的最佳时机,只能一次买入和一次卖出

48、可以进行多次交易的结果,求赚取的最大利润

49、(A,B)(A,C)(B,D)(D,A)判断是否有循环引用,提示用拓扑排序

50、数组找是否存在和为M的两个数

51、KMP

52、实现一个阻塞队列(生产者消费者模型)

53、找出10000个数据中第 k 大的数

54、输入一个字符串,包含数字、加减乘除和括号,输出结果,编程

55、给定一个数x,要求使用k个数字求和可以得到x,数字从1-9中选择,不能重复。

56、输入一个正整数 N,返回 N 个 '(' 和 N 个 ')' 的所有可能情况

57、76.minimum-window-substring、30.substring-with-concatenation-of-all-words、42.trapping-rain-water,

58、求树的最左下节点

59、无序数组中第k大的数(quick select)

60、求旋转数组找最小值(二分)

61、判断二叉树是否镜像(递归)

62、给定一个矩阵,从左上角开始只能往下或者右走,求到达右下角的最小权值路径

63、字符串转Int,如果越界就返回0

64、lc400

65、单向链表实现加法

66、打家劫舍

67、收到礼物最大值

68、五张牌,其中大小鬼为癞子,牌面为 0,判断这五张牌是否能组成顺子

69、给定一个字符串打印所有的子串,要求不重复

70、自然数1-n,排一块组成的字符串,求第k位是什么。

71.如果a[0]a[n-1],那么请找出任意一个点使得a[i-1]a[i+1] 要求logN

72、a[-1]和a[n+1]设为负无穷大,二分查找找到数组中的一个峰值。

73、如果有一组数字,按照“拿出第一个数在桌上并然后将下一个数放到队尾”一直操作直到数字全部放在桌子上,给你最后在桌子上的数字,请返回最开始数字的顺序。

74、有序数组找到第一个小于0的数和第一个大于0的数

75、合并两个排序数组并去重

76、两个排序数组找中位数

77、两个超大整数的字符串做减法运算。

78、1~10000中7出现的次数,如17算1个,77算2个。

79、给一个字符串数组,统计每一个字符串出现的次数,要求不能用set,map.时间复杂度O(n).

80、手撕最大堆,实现对应的push和pop操作

81、找出一个字符串中所有的回文子串

82、重复次数最多的最长连续子串(即找到重复次数最多的子串,若有多个,输出最长的)

83、长度为n的数组,有一个长度为k的滑动窗口,询问各个滑动窗口内的中位数。

84、区间最大最小值。两个长度为n的序列a,b,问有多少区间[l,r] 满足max(a[l,r])

85、8皇后问题共有多少种解法

86、一个数字串删除指定个数的数字字符,剩下的组成一个最大的数

87、N个长度为K的有序链表合并,时间复杂度,空间复杂度

88、N个长度为K的有序数组合并,时间复杂度,空间复杂度

89、用一个栈去排序另一个栈

90、一个数组实现两个栈

91、一个n位数,现在可以删除其中任意k位,使得剩下的数最小

92、实现有符号大数链表加法,靠近头结点位置为高位

93、找出来数组中每个元素后边第一个比它大的值

94、完全二叉树的最大深度与节点个数

95、两个有序数组交集、并集

96、用二分法对一个数字开根号

97、一个无序有正有负数组,求乘积最大的三个数的乘积

98、实现链表,无序链表,对链表值奇偶分离并排序,空间复杂度O(1)

99、无序数组构建一棵二叉排序树

100、打印出根节点到叶子节点的最长路径

101、字符串形式自定义进制大数相加

102、LeetCode  1038

103、任意一个整型数组,判断是否可以将数组分为三个区间,每个区间中数值的和相同

104、二叉树逆时针打印最外层节点

105、无向图最短路径

106、输入一个矩阵,起始点和目标点,判断是否存在可达路径

你可能感兴趣的:(算法)