工程赛道视频面试算法题:
- 逆时针螺旋打印数组
- 给定一个字符串和一个字符集合,判断字符集合是否都在字符串中出现过;同时再求该字符串的最小子串(子串的长度最小,长度一样时取字典序最小),使得这个子串同样包含字符集合中的所有元素,字符均为小写英文字母。最小子串可能有多个,找到任意一个即可。
例如:
字符串S="abcdefg",字符集合D={'c','f'},那这个最小子串为S'="cdef"。
字符串S="cfcf",字符集合D={'c','f'},那这个最小子串为S'="cf"。
夏令营笔试1
https://blog.csdn.net/qq_26443737/article/details/90610151
夏令营笔试2
https://blog.csdn.net/u011000290/article/details/90760135
提前批算法题
- 给定数组nums=[1,2,3,2,3,2,3],和一个常数K,找到数组里面出现次数>(N/k)次的数
比如k=3,那么N/k=7/3=2,数组里面出现此时>2的有2、3。 - 多个集合,有交集的集合合并,输出合并后的结果
- 打家劫舍:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。
给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。
示例 1:
输入: [1,2,3,1]
输出: 4
解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。
偷窃到的最高金额 = 1 + 3 = 4 。 - 给一个数组,返回倒数第k大的数(可能有重复,用快排的思想,时间复杂度为:n+n/2+n/4+n/8+...=n(1+1/2+1/4+1/8+...),属于等比数列,结果为2*n,故时间复杂度为O(n))
- 给一个数组,当前数组的值为能够前进的步数,问最少多少步能够走完这个数组。比如数组[3,4,1,2,3,4,2,3],arr[0]=3代表能够从当前位置往后走3格,可以选择其中任意一格停下,然后读取当前格的值继续前进。
字节跳动其他面试算法题
- 两数之和
- recorded list链表重排序
- 给定数组nums=[1,2,3,2,3,5,4],和一个常数K,找到有没有可能将nums分成k个子集,使得每个子集的和相等
(5),(1,4),(2,3),(2,3) True - 搜索旋转排序数组
- 找出一串字符串的最长子串,要求最多两个不同的字母。
- 给定一个字符串,求最大不重复子串长度
- 2个字符串的最大子序列长度
- leetcode 42 雨水收集问题
- 给了一个长度为n的 值的范围为0 到 n-1的数组,然后判断是否有重复的元素出现的问题。
- 给定一个矩阵,从左上角开始只能往下或者右走,求到达右下角的最小权值路径
- 单链表的回文判断
- 有序链表的合并
- 单链表的反转(是否有环),单链表每k个翻转
- 给一个数字字符串,输出所有的合法IP
- 最大栈
- 查找出现次数超过总数一半的数(1、借鉴查找第k大的数,把k设置成n/2上取整;2、每次选两个不同的数删除)
- 数组的最长上升子序列(非连续)
- 数组的最长上升子序列(连续)