算法题目

算法题

LeetCode 83. 删除排序链表中的重复元素

LeetCode 50. Pow(x, n)

LeetCode 103. 二叉树的锯齿形层次遍历

LeetCode 138. 复制带随机指针的链表

LeetCode 232. 用栈实现队列

LeetCode 104. 二叉树的最大深度

LeetCode 111. 二叉树的最小深度

LeetCode 344. 反转字符串

LeetCode 9. 回文数

LeetCode 160. 相交链表

LeetCode 215. 数组中的第K个最大元素

LeetCode 26. 删除排序数组中的重复项

LeetCode 80. 删除排序数组中的重复项 II

LeetCode 70. 爬楼梯

LeetCode 121. 买卖股票的最佳时机 (还要求写测试用例,要求跑通)

LeetCode 122. 买卖股票的最佳时机 II

LeetCode 123. 买卖股票的最佳时机 III

LeetCode 322. 零钱兑换

 

 

LeetCode 92. 反转链表 II

LeetCode 142. 环形链表 II

LeetCode 144. 二叉树的前序遍历(迭代版本)

LeetCode 105. 从前序与中序遍历序列构造二叉树

LeetCode 106. 从中序与后序遍历序列构造二叉树

LeetCode 226. 翻转二叉树 (递归与非递归两种思路)

LeetCode 235. 二叉搜索树的最近公共祖先

LeetCode 236. 二叉树的最近公共祖先

LeetCode 21. 合并两个有序链表

LeetCode 23. 合并K个排序链表

 

LeetCode 面试题40. 最小的k个数(要求多种算法解决)

 

 

 

LeetCode 695. 岛屿的最大面积 (我想了个分治,思路不对,直接爆炸,面试官还是不错的,给我换了道题)

 

 

 

 

 

 

 

 编程题:最小的k个数。优先队列,还有呢?排序?还有呢?基于Partition


算法:将两个无序链表排成有序链表
follow up:优化排序一个链表

算法:二叉树宽度

一个链表,奇数位是升序,偶数位是降序,如何把它变成一整个升序链表?

1.六道算法 40分钟

1) 洗牌算法:对52张牌洗牌,要求尽量洗乱,而且原牌不能在原位置上重复
2) 现在有n个微信群,每个群里面有2到m个人,设计一个数据结构存储这些信息,要求该结构能快速找出每一个人所在的所有的群Id。
3) 数组a[N],存放了数字1至N-1,其中某个数字重复一次。写一个函数,找出被重复的数字。时间复杂度必须为O(N), 空间复杂度不能是O[N]。
4) 现在有一个微信群,里面有n个人,每个人的id用整数int标示,现在要求找出id是对称数字的人出来,如3, 121, 12321。 请实现改查找函数,不能把整数转为字符串来判断。
5) 给定一个字符串,如“1234”,请实现一个函数,把这个字符串转成10进制整型,不能用系统函数
6) 有一个二叉树,每个节点的值是一个整数。写一个函数,判断这棵树中是否存在从根到叶子节点的一个路径,这个路径上所有节点之和为某一个值。存在返回1, 否则返回0。

11.算法题:按照之字形分层遍历二叉树,要求bug free,并且构造二叉树进行测试。

 从输入构建二叉树,考察各种异常情况的处理,然后写BFS

2. 有5亿用户,用户id是int类型,在1到5亿区间连续,从这5亿用户中均匀、随机抽取10万个用户id发促销邮件。

3. 实现一个线程安全的正整数,incrementAndGet和decrementAndGet方法即可

 笔试题:二分查找

  • 反转队列前k个元素 -- 用辅助栈做
    • 开始我当链表做的
  • 两个有序链表的排序
    • 写了递归再让我优化空间
    • 写了个迭代

做算法题,给定数组,找出第一个idx,前面的数字都比它小,后面的数字都比它大

如何优化空间复杂度(想不出来

6、算法题:对于一个数组,里面只有两个数出现次数为奇数,其他数字出现次数为偶数,找出这两个数。

2. 求二叉树的宽度,先简介思路再写代码。

编程题:100块红包,6个人能抢到,每人抢到金额大于或者等于10块,必须抢完

5. 求二叉树的最大距离,写代码。
7、算法题:找出以3、 5、 7为因子的第K个数。

 9、算法题:找出一个字符串中最长不重复子串。(滑动窗口思路)

 手撕代码是两个长字符串数字相加,不能用BigDecimal,例如“123”+“456”

手写算法题:输入一个二维数组,里面只有0和1,找到其中全为1的面积最大的正方形。

 手撕是设计一个栈(push、pop、peek、getmin)

 

 

11、二叉树层序遍历代码。

最长公共递增子序列(口述如何做)https://blog.csdn.net/qq_41280600/article/details/98647120  https://blog.csdn.net/Irving_zhang/article/details/79820595

算法题:一个文件中,每行是一个整数。找出出现次数最多的是个整数。

 

算法题,牛客写,写完跑完所有测试用例

 算法题 字符串含有一个定词长单词集合序列的起始位置。单词集合每个出现一次,顺序无关。

 

1.java实现求一个数开根的结果(精度为0.001)
2.求树的高度

算法题,说思路

  • 海量数据,找最大的100个

 算法题:
1笔试中的一道题  数字置换
2给一个int数组,在不new int数组的情况下,目标为奇数前偶数后,奇数升偶数降

15.不使用第三个变量交换a和b的方式
16.算法题一:a+b+c=0
17.算法题二:链表倒数第N个节点

3.算法:逆波兰表达式(给四则运算,求逆波兰表达式)

27、算法题很简单 了解链表吗?怎么知道单向链表中间结点?反转链表?
28、说说自己平时用的排序算法
  • 合法的括号序列

输入a1,a2,...,an,b1,b2,...,bn, 在O(n)的时间,O(1)的空间将这个序列顺序改为a1,b1,a2,b2,a3,b3,...,an,bn, 且不需要移动,通过交换完成,只需一个交换空间。

代码题

  • 构造死锁代码片段,然后把死锁的改成不死锁的
  • 用Java实现,对一个日志文件中的日志,找出包含error的日志,并去重排序
  • 一个数据库表设计,然后写SQL

coding:手写快排,时间复杂度分析

 说说动态规划举个例子(让我把举得例子详细实现说一下这里浪费不少时间)

2.一个排序数组,可能有重复元素,要求返回不重复元素个数,并且数组前几位去重。例如1 ,2.2.3,
3.4--》要求前四位是1 , 2,3, 4后面无所谓,返回4.
 求字符串的逆序对(剑指offer原题)

二叉树的遍历

 从二叉树中找到最大的二叉搜索子树

 

16.写个题吧,两个大整数用字符串表示,求和返回结果(乍一看挺简单,写起来真的很麻烦,最后没写完,面试官表示嗯没事我懂的,思路基本对了就行)😂

翻转链表

 

1、代码测试 三道代码题 ,给90分钟,不过很快就写完了,不允许使用任何库函数和自带的数据结构
(1) 找出第100大的数
(2) 字符串复制函数
(3) 10进制数字转成64进制数,进制符包括0-9 A-Z a-z 和#@ 

二分查找,输出下标
19.长度为10的数组,0~9的数字无序且可重复,找出重复的数字,要求:时间复杂度O(n),空间复杂度O(1);(有人会的话请粘到评论区,多谢,注意时间和空间复杂度)

public class Main{
    public static void main(String[] args) {
        int[] arr = {1,1,1,1,2,4,4,6,6,6};
        for (int i = 0; i < arr.length; i++) {
            int index = arr[i];
            if (index == i || index == -1){
                continue;
            }else if (index != arr[index] && arr[index] != -1){
                int tmp = arr[i];
                arr[i] = arr[index];
                arr[index] = tmp;
                i--;
            }else if (index == arr[index]){
                System.out.print(index + " ");
                arr[index] = -1;//防止像 {3,3,3}这样的输出3 3
            }
        }
    }
}

排序算法比较,复杂度,稳定性等

 

图最短路径问题

算法:数组内元素成对出现,只有一个单独的,怎么找到它

7、给你一个数组,里面只有一个数单独出现一次,其他数都出现过两次。问怎样最快找到这个数?
 
9、你说了用双指针,那么如何判断环的长度大小?
(我当时忘记改速度,对方最后提醒我我才知道)
10、n*n的矩阵,值为0或者1。0带便这个方向不能走,1表示可以。我想从(0,0)走到(n-1,n-1),如何找出最短的走法
(我一开始就是直接答深度优先搜索+回溯,主要是这两天美团和我学长一直在问我这道题,美团才前几天手撕求出相应的36进制数这道题。后面我一直在纠结对角线的问题上,中间说了3次自己想不出来。面试官一直坚持问我,甚至帮我点思路。最终我说出不断求取到下一阶段的最小值,所有的总和就是最小值,类似迪杰斯特拉差不多。。。面试官说思路可以了)

(面试前发的,邮件发送的题目:给定一个100个元素的整数数组,元素都初始化为0,然后把数字0 ~ 99随机填入某个位置,但是 有两个数字遗漏了,写一个算法找出这两个数字。)

后面又说如果是一个数字呢再怎么解决?按照两个数字的算法的话,一样可以算出一个数字的。但是,面试官想问的是优化吧,还好之前提前试了用0-99的和减去数组的和,便是缺少的数字。

算法题:将链表按k为大小分快,将块内链表反转

算法题

  • 给出a=1, b=2, ..., z=26 这样一个编码,问比如组成126有多少种情况(讲思路)

.说一说排序算法知道哪些?时间复杂度都是多少?最好情况下是多少?最坏情况下是多少?

算法题,给定一个精度求一个数的平方根

算法题:字符串单词翻转:如“how are you”变为“you are how”

 
静态内部类

9. 写一个题 整数除法,不能用除号

写了一个字符串复制的程序
17、提出了写法的规范和有什么改进的地方(写的太菜了,不规范,被鄙视的面试官都笑了)

 算法:对数组表示的整数进行加一( [9,9,9] ---> [1,0,0,0] )

算法:无序数组中和为n的所有种可能(一开始想到了背包问题,但是发现不可以,最后用分治解决,最后实际上还可以剪枝,但是当时没有想这么多)

算法:无序数组中找到满足要求的第一个数字,要求这个数字将数组分割为了一小一大两个部分(空间复杂度优化)

假如有10亿个手机号,怎么样快速判断一个手机号是否在其中(一开始没什么好的思路,面试官一步一步从hash,二分,布隆过滤器引导到位图)

算法题:把数组中奇数放在前面,偶数放在后面,并且奇数偶数都要保证从小到大,要求空间复杂度O(1)

 

 

智力题

你有1000瓶饮料,其中有1瓶有毒,你有许多老鼠,老鼠喝完饮料之后24小时会死,请问你平均需要多少天找出这个有毒的饮料?需要多少老鼠?
5.你有1000法力值,有4个技能,技能伤害值与消耗魔法值成正比,请问你怎样用技能,才能做到伤害输出最大?
6.打怪有80%概率掉落a装备,20%概率掉落B装备,请问一个人平均要打几次怪,才可以凑齐ab装备?(这一题我不会,希望有大佬帮我解答一下)
机智题:烧完一整根香需要30分钟,怎么样得到15分钟的计时,怎么样得到7.5分钟的计时
 
 

2、智力题

数据源:1 1 2 2 3 3 4 4

要求两个1之间有1个数,两个2之间有2个数,两个3之间有3个数,两个4之间有4个数
打印数字的组合

 

 
 
 
 
posted @ 2020-03-30 09:40  windy杨树  阅读(488)  评论(0编辑  收藏  举报