面经---CloudIn(云英)
2017-01-11 本文已影响196人
克洛诺斯
1.将数组从小到大输出
面试官描述为:有一个数组,前部分(注意并未说前半部分)非递减,后部分非递增,要求将该数组从小到大输出,时间复杂度O(n),空间复杂度O(1)。
当时我的思路是排序后顺序输出,但是只能做到时间复杂的O(nlogn)。面试完Google并没有找到该题目。
2.将二维正方形矩阵从右上角沿对角线输出
输入为非负整数N,该数等于右上角数值,即为矩阵边长。
我当时的想法是沿对角线一行一行输出,输出为单独的函数,给它起始、结束位置即可,面试完后发现是错的,起始、结束位置的公式写错了。如下是正确解法
vector<int> arrayPrint(vector<vector<int> > arr, int n) { vector<int> result; int row = 0, col = n-1; while(row < n) { int i = row, j = col; while(j<n && i<n) { result.push_back(arr[i][j]); i++; j++; } if(j == n && i < n) col--; if(i == n) row++; } return result; }
3. C++基础
1. int (*s[10]) (int)
s为指针数组,其中的每一个元素为参数为int,返回值为int的函数指针。
2. C++是类型安全的吗
不是。因为C++中0可以代表bool类型变量中的false,非0可代表true
然后,后来还问了些最近有没有做一些什么项目之类的,目测跪了,发挥的太糟糕了。