开发岗面试问题总结:手撕代码
目录
手撕代码
- 给定一个数字数组,建立哈夫曼树,返回哈夫曼树的头指针
- 最长公共连续子序列
- 手写一个排序算法吧,要不就快排吧
- 去掉字符串中的空格空格
- 最长回文字符串
- 链表合并
- [0, n), n个数,范围[0, n-1], 求是否有重复方法
- 求第k大的数的方法以及各自的复杂度
- 当有相同元素时,求第k大的元素的方法(类似快排,手撕)
- 给你一个数组,再给你几对数,这几对数只能够同时出现或者不同时出现,求拿出k个数的可能性(true or false)(手撕,dfs标号+dp)
- 实现一个买票系统:实现买票,退票,检票。给一个小时,手撕,文件流+map搞一下就行了,API之类的可以百度。
- 数据流,如何获取中位数,复杂度
- 一到一百万的素数,怎么快速求
- 有一堆数,再给你很多对数,每对数都在同一个组,求一共有多少组数
- 有很多蜡烛,每根蜡烛1个小时,求15分钟怎么计时
- 十六进制转十进制
- 1/x + 1/y = 1/n
求最小的n,使得对数超过1000 - 如何求前100大的数
- 栈实现队列,队列实现栈
- 手撕:求一个集合的所有子集,递归实现,非递归实现
- 去除包含4的数字,求一个数字是第几个数,比如5是第四个数(数位dp)
- 有一个楼梯,一共有n层,可以走a步,也可以走b步,问最高能走到哪里?(dp,O(n))。增加一个条件,有一次条件可以回退一半,比如本来在第8层,可以有一次机会直接到第4层。(两次dp,O(n))
- 一个数组,里面大多数都是成对的,只有两个数没有成对,求这两个数(异或搞一下,把数组分成两组)
- 求一个栈的pop序是否合法。
- int to string,string to int。
- 反转链表
- 大数相乘
- char *s1, const char *s2,删除s1中s2出现过的字符
- 删除单项链表中重复的节点 (1 2 2 3 3 9) -> (1 2 3 9)
- 求二叉树的深度
- 单链表判环
- 判断一个数是不是回文数
- 求一个数组的最长连续子序列
- 有两个链表,怎么求交点?
- 一万个数,求前100大的数
- 假设有一个排好序的数组,数字都是两个两个出现的,只有一个是单独出现的,求这个数
- 链表翻转(递归,非递归)
- 判断一颗树是不是二叉搜索树
- 给出1000000条数据,每次请求查询时怎么最快,要想好多种方法红黑树,hash然后一直问有没有其他的
- 之字形打印二叉树
- 两个有序数组求交集
- 无序数组求交集 hash
- 二分查找中位数 复杂度分析
- memcpy 函数 怎么实现的,有没有比memcpy更快的
- 判断一个点是不是在三角形内
- 求每一个元素右边第一个最大元素
- 单调栈解法,分析O(N)
- 出一个连续数组,找出一个连续子集中所有元素中最小元乘以加和最大值
- 求一个非递减数组中,绝对值不同的个数 O(N ) O(1)空间
- 字符串翻转
- 叙述一下洗牌算法
- 怎么判断一个数是二的倍数,怎么求一个数中有几个1
- 手写strcpy函数
- 已知最大数为M的递增子序列求所有和为s的子集合
- 两个大的数据集装入的数据是无重复的,求交集
- kmp
- 多重背包,0/1背包
- 字符串转double的代码
- 写点代码写了构造函数、复制构造、复制操作、移动构造、移动操作。
- 二叉排序树的插入、删除,删除没写完
- 给定前序遍历ABC后序遍历CBA,求中序遍历是什么,画出来两种情况
- 前序、中序和后续遍历,递归和非递归
- 50 亿个整数中, 找一个确定的数? 有内存限制, 并且无序
- 给你一个字符串,找出第一个不重复的字符,如“abbbabcd”,则第一个不重复就是c
- 给你两个球,100层楼,每个球在一定高度扔下去会碎,怎么用最少的次数给判断是几层楼能把求摔碎?
- n个整数的无序数组,找到每个元素后面比它大的第一个数,要求时间复杂度为O(N),在面试官提醒下写出来了,用栈+栈底指针
- 讲述一下堆排序
- 归并排序
- 给定一个链表,输入n,删除从结尾开始的第 n 个节点
- 给定一个数组,删除数组连续重复的元素,生成一个新数组
- 给定一个无序数列,输出该序列中出现频率前 k 多的数
- 八数码问题
- 求两个链表的交点;(tips:①判环,②求环的入口,③如果两个链表都有环,判断入口是否相同,共5种拓扑结构)
- 二维平面有n个点,求一条直线,使最多的点落在该直线上,三维呢?
- 不同排序各有优势让我实现一个通用排序库,
- 快排与归并的优劣势
- 给两个字符串A,B,判断B是否是A的子序列
- .给两个字符串A,B,找到在B中所有字母在A中出现的下标
- 给一个字符串A,N次询问,每次问字符串B是否是A的子序列
- 一个有环的单链表,如何找到环结点
- 给一个字符串,将字符串中的单词从后向前翻转,手写代码
- A[50]50个数,B[49]49个数,数字取值范围[0,49],找出A中多出来的一个数字
- 一个平面,100个点,求一条直线,经过的点最多,给个思路就行
- 给你一个50亿的整数让你找出中位数.
- 最大连续子数组的和
- 1、给1亿个数,求字典序第K(k<1亿)大的数(字典树)
- 2、链表拆分,翻转,合并 如 1->2->3->4->5->6 变为1->6->2->5->4->3
- 树转单链表(前序)
- 旋转数组查找
- 求后面第一个比当前数大的数
- 数组两两元素求异或,求最大的异或值(01字典树)
- n个有序链表,合并成一个
- 字符串A,B,在A中删除B中出现过的字符
- 二叉树知道后序中序求前序遍历
- 100万数据找top k,判断一个数是不是2的幂,两个单链表有公共节点,找出第一个。
- 一颗二叉搜索树,找出树中的第k大节点
- 将字符串转化为整型
- 给你两个有序数组,找中位数
- m个有序数组合并后输出前K个数
- 二叉树的最小公共结点
- m个有序数组合并后输出第k个数(二分)
- 手写代码,计算一个整数二进制中0的个数。
- 有一支股票,知道每天的价格,本金一定,只准买卖一次,问如何做到收益最大。
- 给定几个互不相同的数字组成的一个字符串,输出同样由这几个数字组成的,字典序恰好比它大1的字符串。
- (s,n)表示字符串s反复出现n次;s->t表示s去掉若干字符之后能成为t;给定S1与S2,求最大的m使得S1->(S2,m)
- 给定一些正整数(1,3,4,5,7),输入一个n,输出最少用多少个给定的数能加出n来。
- 一个整数序列,A和B两个人轮流取数,每次只能取最左的数或最右的数,两个人都想使自己的和尽可能大,问给定序列以后A和B能取到的和各是多少。
- 给定字符串s,输出第一个满足:在s中恰好出现3次的字母。保证存在这样的字母且字符串都是小写字母组成。
- 手撕代码,二叉树两个节点最长路径
- 两个有序数组合并,n个有序数组合并
- int数组求最大子串和、二维、三维、四维呢
其他算法题
- 有一户家庭,生了两个娃,其中一个是女孩,另外一个是女孩的概率
- 一副扑克牌,怎么实现随机打乱?
- 假设有两个数组,各有十万数量级的整数,如何求交集?
- 个人项目的benchmark性能测试结果如何
- 有100个弹珠,双方轮流拿,每个人只能拿1~5个,无法拿的人输,必胜解法。
- 求char a数组中有的元素和char b数组中没有的元素,放到char c数组。这里我忘记把char字符转成unsigned char类型。
- windows消息机制知道吗?系统怎么知道 。。MFC消息机制
- 1000瓶水有1瓶水有毒,老鼠喝一滴就会死,但是需要一周毒发,请问最少需要多少老鼠多少时间才能找到那瓶有毒的水。答案是10只老鼠1周,解法是十进制转二进制
- 桶中取球排列组合问题
- 40亿个QQ号,4GB的空间,O(1)的时间,这个时候新来了一个QQ号,判断这个QQ号是否存在
- 个非常拥堵的路口,让你分析拥挤原因,并且提供解决方案
- 高德地图是怎么知道高速路哪里堵车了,并且还能标记出来准确的路段? 提出你的设想.
- 如果让你统计出这个城市当中的交通信息,比如说那几个路口每天多少车左转,多少车右转,你怎么做?
- MFC消息怎么定义 x 太久没写忘记了,就记得个声明和绑定函数
- 做个数学题吧,一副扑克牌取5张,出现顺子的概率,大小王能任意当成什么牌
- 8个球找重量不一样的一个怎么称
- 36匹马6个跑道无秒表选前三,最少跑几轮
“ 万物皆有时,比如你我相遇 ”