1. 本次面试是在牛客网平台进行的,没有涉及到技术细节,面试官也说仅仅是聊天。但是,不知道是网络卡顿还是平台缘故,连接非常不稳定,经常听不到声音,对方那边噪音也特别大,面试体验不是很好。
2. 面试时间三十分钟,大体上问了以下几个方面的问题:
  • 自我介绍?
  • 有没有阅读过源码的经历,假如给你一份源代码,你准备怎么阅读?
  • 大学期间自学过什么知识,是如何自学的?
  • 项目介绍以及目前取得的成果?
  • 在项目中遇到过哪些问题,怎么解决的?
  • 大学里坚持过哪些事情?
3. 前面这些问题都是一些开放性问题,只在最后问到了一个附加编程题。
  • 给定一个无序数组,找出某一元素后面第一个比它大的数字。

    思路:用栈来实现。

    • 从第一个元素开始进栈,每次对栈顶元素和序列的下一个元素进行比较,直至找到第一个比它大的数再出栈。
    • 若栈顶元素小于序列元素,此序列元素即为后面第一个比它大的数,栈顶元素出栈,继续进行比较;若栈顶元素大于等于序列元素,则继续将此序列元素压栈,再进行下一轮比较;若栈为空,则压入当前正在比较的序列元素。
    • 若比较到最后一个元素同时栈为空或者最后一个元素依然小于等于栈顶元素,则比较结束。
  • 代码如下:

/*

找出一个无序序列中在某个数后面第一个比它大的数

测试用例如下:
6 3 1 5 4 2 6
5 5 6 6 6 10 2 4 5 8 9 7 10 6 64 1
4 5 8 9 10 10 64 64 0 10 6 3 2 7 1 0 9 8 5 10
7 7 7 9 9 9 10 10 10 */ #include <iostream>
#include <vector> using namespace std; int main()
{
int n = ;
cin >> n; int data[n] = {};
int result[n-] = {};
int i = ;
for(i = ; i < n; i++)
{
cin >> data[i];
} vector<int> num; //作为栈保存数据
vector<int> index; //保存栈中数据在原始序列中的位置 i = ; // 初始化为 0,向栈压入第一个数据
while ()
{
if (int(num.size()) == )
{
// 栈为空,并且比较到最后一个数据,循环结束
if (i == n-)
{
cout << "exit2" << endl;
break;
}
// 栈为空,压入新的数据
num.push_back(data[i]);
index.push_back(i);
i++;
} // 每次拿当前数据与栈顶元素比较,
// 若当前数据小于等于栈顶数据,继续压栈
int len = int(num.size() - );
while (num[len] >= data[i])
{
// 比较到最后一个数据仍然比栈顶小,大循环结束
if (i == n - )
{
cout << "exit1" << endl;
goto END;
}
num.push_back(data[i]);
index.push_back(i);
i++;
len = int(num.size() - );
} // 若当前数据大于栈顶数据,当前数据即为栈顶数据后面
// 第一个比它大的数,然后弹出栈顶数据,进行下一轮比较
result[index[len]] = data[i];
num.pop_back();
index.pop_back();
} END:for(i = ; i < n-; i++)
{
cout << result[i] << " ";
} return ;
}

个人见解,如有错误,欢迎指正与交流!

获取更多精彩,请关注「seniusen」! 

今日头条 2018 AI Camp 视频面试的更多相关文章

  1. 今日头条 2018 AI Camp 5 月 26 日在线笔试编程题第一道——最佳路径

    题目 给定一个 n*m 的矩阵 A ,矩阵中每一个元素为一个十六进制数.寻找一条从左上角都右下角的路径,每次只能向右或者向下移动, 使得路径上所有数字之积在 16 进制下的后缀 0 最少. 输入描述: ...

  2. 今日头条 2018 AI Camp 6 月 2 日在线笔试编程题第一道——最大连续区间和扩展

    题目 给出一个长度为 n 的数组a1.a2.....ana1.a2.....an,请找出在所有连续区间 中,区间和最大同时这个区间 0 的个数小于等于 3 个,输出这个区间和. 输入描述: 第一行一个 ...

  3. 今日头条 2018 AI Camp 5 月 26 日在线笔试编程题第二道——最小分割分数

    题目: 给 n 个正整数 a_1,…,a_n, 将 n 个数顺序排成一列后分割成 m 段,每一段的分数被记为这段内所有数的和,该次分割的分数被记为 m 段分数的最大值.问所有分割方案中分割分数的最小值 ...

  4. 今日头条 2018 AI Camp 6 月 2 日在线笔试编程题第二道——两数差的和

    题目 给 n 个实数 a_1, a_2 ... a_n, 要求计算这 n 个数两两之间差的绝对值下取整后的和是多少. 输入描述 第一行为一个正整数 n 和一个整数 m.接下来 n 行,第 i 行代表一 ...

  5. Android 高仿 频道管理----网易、今日头条、腾讯视频 (可以拖动的GridView)附源码DEMO

    距离上次发布(android高仿系列)今日头条 --新闻阅读器 (二) 相关的内容已经半个月了,最近利用空闲时间,把今日头条客户端完善了下.完善的功能一个一个全部实现后,就放整个源码.开发的进度就是按 ...

  6. Android 高仿 频道管理----网易、今日头条、腾讯视频 (能够拖动的GridView)附源代码DEMO

    距离上次公布(android高仿系列)今日头条 --新闻阅读器 (二) 相关的内容已经半个月了.近期利用空暇时间,把今日头条client完好了下.完好的功能一个一个所有实现后.就放整个源代码.开发的进 ...

  7. (android高仿系列)今日头条 --新闻阅读器 (三) 完结 、总结 篇

    从写第一篇今日头条高仿系列开始,到现在已经过去了1个多月了,其实大体都做好了,就是迟迟没有放出来,因为我觉得,做这个东西也是有个过程的,我想把这个模仿中一步一步学习的过程,按照自己的思路写下来,在根据 ...

  8. 今日头条 CEO 张一鸣:面试了 2000 个年轻人,混得好的都有这 5 种特质

    https://blog.csdn.net/qq_35246620/article/details/72801285 博主说:多了解了解总是好的. 正文 张一鸣算是 80 后中绝对的佼佼者.1983 ...

  9. 2018春招-今日头条笔试题-第四题(python)

    题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版) #-*- coding:utf-8 -*- class Magic: ''' a:用于存储数组a b:用于存储数组b num:用于 ...

随机推荐

  1. C#结构体和字节数组的转换函数

    在通信过程中,一般我们都会操作到字节数组.特别是希望在不同语言编程进行操作的时候. 虽然C#提供了序列化的支持,不用字节数组也行.但操作字节数组肯定会碰到.   一般都会采用结构来表示字节数组.但结构 ...

  2. 使用dva框架的总结

    最近的项目是react+dva+atd+webpack的一个后台项目,刚接触dva就感觉很喜欢,很简洁用着很爽. 关于使用redux中的一些问题 1.文件切换问题. redux的项目通常哟啊分为red ...

  3. Xshell中使用FTP/SFTP工具下载文件

    (1)sftp host_ip,输入用户名/密码 (2)通过cd命令找到远程服务器要拷贝的文件: 通过lcd命令指定本地保存地址. (3)通过get filename拷贝文件 (4)在本地查看,已经可 ...

  4. 手动创建简单webpack项目及React使用

    一.创建基本的webpack4.x项目 1.运行 npm init -y 快速初始化项目 2.在项目根目录创建src的源代码目录和dist产品目录 3.在src目录下创建 index.html 4.使 ...

  5. c++ vector二维数组常见写法

    vector<vector <int> > array(3);//定义了行数为3列数不定的二维数组 array.size()//返回二维数组的行数 array[0].size( ...

  6. 嗨翻C语言笔记(二)

    ~a a中所有位都取反 a & b a中的位 与 b中的位 (都为1则1,否则为0) a | b a中的位 或 b中的位 (只要对应位一个位1则为1) a ^ b a中的位 亦或 b中的位 & ...

  7. java.util.ArrayList,java.util.LinkedList,java.util.Vector的区别,使用场合.

    下图是Collection的类继承图 从图中可以看出:Vector.ArrayList.LinkedList这三者都实现了List 接口.所有使用方式也很相似,主要区别在于实现方式的不同,所以对不同的 ...

  8. 免安装版Tomcat9中间件的安装

    [环境准备] OS版本:Windows10.64位 Tomcat版本:apache_tomcat9.0.7.zip免安装版 [彻底卸载已安装的Tomcat中间件] 01:由于是免安装版本,因此直接删除 ...

  9. 使用SimpleDateFormat解析日期得到年份不正确的结果

    今天写项目的时候发现日期解析结果不对,很纳闷,从控制台中看传过来的数据是对的,但解析得到数据就是错的,如下图 最终查资料发现是格式上的错误,年份的YYYY应该改成yyyy,之后就正常了. 以下是正确格 ...

  10. Object.keys方法

    我们有时需要知道对象的所有属性,原生js给我们提供了一个很好的方法:Object.keys(),该方法返回一个数组 传入对象,返回属性名 var obj = {'a':'123','b':'345'} ...