知能科技C++开发CTO面
自我介绍
笔试复盘
算法题
给出一个二维数组 实现两个函数
1)将数组行序随机打乱得到row
将数组列序随机打乱得到col
返回row col
2)根据row col复原原数组
两道附加题(竞赛难度)
1.已知平面上的一个圆和若干点 快速求出包含点数最少的多边形使得圆在多边形中
建图 圆内的点删去 两点之间的边若与圆不相交则保留 权为1 否则删去 则转化为求图的最小环
用dilkstra算法 先把每个点到自己的距离设为inf 然后求到自己的最小距离 点若用数组保存则为O(n^3) 若用红黑树保存则为O(nmlogn) n为点数m为边数
2.给出一无序数组 求所有长度大于等于k的连续子序列的中位数的最大值 定义中位数为第[l/2](向上取整)(l为数组长度)个数
先复制一份数组并排序 用二分查找法 假设查找到的数为i 则将原数组大于等于i的置为1 小于的置为-1 建立前缀和数组用贪心和双指针进行判断 若有长度大于等于k的区间其和大于等于0 则说明数组中存在大于等于i的中位数 否则不存在 开始下一次二分
O(nlogn)
讲项目 项目架构
反问#面试复盘##C/C++##软件研发工程师#
笔试复盘
算法题
给出一个二维数组 实现两个函数
1)将数组行序随机打乱得到row
将数组列序随机打乱得到col
返回row col
2)根据row col复原原数组
两道附加题(竞赛难度)
1.已知平面上的一个圆和若干点 快速求出包含点数最少的多边形使得圆在多边形中
建图 圆内的点删去 两点之间的边若与圆不相交则保留 权为1 否则删去 则转化为求图的最小环
用dilkstra算法 先把每个点到自己的距离设为inf 然后求到自己的最小距离 点若用数组保存则为O(n^3) 若用红黑树保存则为O(nmlogn) n为点数m为边数
2.给出一无序数组 求所有长度大于等于k的连续子序列的中位数的最大值 定义中位数为第[l/2](向上取整)(l为数组长度)个数
先复制一份数组并排序 用二分查找法 假设查找到的数为i 则将原数组大于等于i的置为1 小于的置为-1 建立前缀和数组用贪心和双指针进行判断 若有长度大于等于k的区间其和大于等于0 则说明数组中存在大于等于i的中位数 否则不存在 开始下一次二分
O(nlogn)
讲项目 项目架构
反问#面试复盘##C/C++##软件研发工程师#