爱奇艺电话面试总结
1 struct ST
{
int data;
......
};
void sort_st(vector<ST>& st_arr)
{
......
}
ST结构体的data成员只有0,1,2三种取值,输入st_arr数组中data是乱序的,要求算法使完成排序,要求时间复杂度O(n),空间复杂度O(1)
如原数组[0,1,2,1,0,2,2,1,1]
-->[0,0,2,2,2,1,1,1,1]
思路1:
(1)设置两变量,i用来指向已确定位置,j用来遍历
(2)遍历第一遍将0放到应该位置,再遍历一遍将2放到应该位置
//遍历第一遍
[0,1,2,1,0,2,2,1,1] //交换
i j
[0,0,2,1,1,2,2,1,1]
i j
//遍历第二遍
[0,0,2,1,1,2,2,1,1] //交换
i j
[0,0,2,2,1,1,2,1,1]
i j
......
思路2:
思路1需要遍历2遍,面试官说可遍历1遍
参考#2GungnirLaevatain
2 百G文件,找出出现次数前十的字符串(海量数据处理)
http://blog.csdn.net/fycy2010/article/details/46945641
再没啥说的了,静下心,多刷刷牛客题吧!
{
int data;
......
};
void sort_st(vector<ST>& st_arr)
{
......
}
ST结构体的data成员只有0,1,2三种取值,输入st_arr数组中data是乱序的,要求算法使完成排序,要求时间复杂度O(n),空间复杂度O(1)
如原数组[0,1,2,1,0,2,2,1,1]
-->[0,0,2,2,2,1,1,1,1]
思路1:
(1)设置两变量,i用来指向已确定位置,j用来遍历
(2)遍历第一遍将0放到应该位置,再遍历一遍将2放到应该位置
//遍历第一遍
[0,1,2,1,0,2,2,1,1] //交换
i j
[0,0,2,1,1,2,2,1,1]
i j
//遍历第二遍
[0,0,2,1,1,2,2,1,1] //交换
i j
[0,0,2,2,1,1,2,1,1]
i j
......
思路2:
思路1需要遍历2遍,面试官说可遍历1遍
参考#2GungnirLaevatain
2 百G文件,找出出现次数前十的字符串(海量数据处理)
http://blog.csdn.net/fycy2010/article/details/46945641
再没啥说的了,静下心,多刷刷牛客题吧!