非科班出身,觉得还是有些难度的,可能自己刷题还不够吧,面试时基本上都是在面试官提点下写出,这里贴出来仅供参考~
商汤:
一面:输入给两个数组,一个数组内数字都是不重复的,要求输出一个数组,该数组只包含两个输入数组的所有相同元素,要求算法复杂度。
eg:输入[3,10,4,9,7,8]和[6,8,10,4,2,1]
则输出[4,8,10]
思路:先排序,后双指针遍历;
#include <iostream>
#include <vector>
vector<int> find_same_num(vector<int> &a,vector<int> &b)
{
sort(a.begin(),a.end()); //O(n*log2(n)) 这里偷个懒,不写快排了
sort(b.begin(),b.end()); //O(n*log2(n))
vector<int> res;
for(int i=0,j=0;i<a.size()&&j<b.size(); ){ //O(m+n)
if(a[i]==b[j])

非科班程序员分享商汤和旷视面试经历,涉及数组操作和图像处理算法。商汤面试题要求找出两数组中相同元素,采用排序+双指针方法;旷视一面是数组最大连续子序列和,使用动态规划解决;二面为二值化图片连通域问题,通过深度优先搜索来求解。

2097

被折叠的 条评论
为什么被折叠?



