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. Unity 游戏框架搭建 (十) QFramework v0.0.2小结

    从框架搭建系列的第一篇文章开始到现在有四个多月时间了,这段时间对自己来说有很多的收获,好多小伙伴和前辈不管是在评论区还是私下里给出的建议非常有参考性,在此先谢过各位. 说到是一篇小节,先列出框架的概要 ...

  2. ndk-build 学习笔记

    # 必须以local_path 开头# 定位源文件LOCAL_PATH := $(call my-dir) #引入clear-vars.mk文件,清除除local_path以外的其他local_< ...

  3. Spring Boot学习笔记(二二) - 与Mybatis集成

    Mybatis集成 Spring Boot中的JPA部分默认是使用的hibernate,而如果想使用Mybatis的话就需要自己做一些配置.使用方式有两种,第一种是Mybatis官方提供的 mybat ...

  4. js/jquery 禁用点击事件

    前言 工作中经常遇到这种情况:验证邮箱页面的重新发送需要在3分钟后才可以点击触发请求,所以在这之前需要禁用他的点击. 网上查了后有以下几种实现方法 1.css禁用鼠标点击事件 .disabled { ...

  5. foreach, for in, for of 之间的异同

    forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数. 注意: forEach() 对于空数组是不会执行回调函数的. 示例代码: var arr = [4, 9, 16, 25]; ...

  6. vim 输入特殊字符

    在VIM中可以通过二合字符和十进制进行输入, 在输入模式中,Ctrl + V, 十进制 在输入模式中,Ctrl + K, 二合字符(区分大小写) 注意:特殊字符也算一个字节 通过用的^@是为了保证结尾 ...

  7. VMware ESXi-6.7——安装

    前提条件: 下载ESXi-ISO镜像文件 制作启动文件 将服务器调试为U盘启动 进入U盘启动模式 1. 进入ESXi的安装页面 选择要安装的磁盘 选择USB口驱动 设置一个root密码 保存数据提示 ...

  8. Java四舍五入时保留指定小数位数

    方式一: double f = 3.1516; BigDecimal b = new BigDecimal(f); , BigDecimal.ROUND_HALF_UP).doubleValue(); ...

  9. 2017年PHP程序员未来路在何方?(转载)

    PHP 从诞生到现在已经有 20 多年历史,从 Web 时代兴起到移动互联网退潮,互联网领域各种编程语言和技术层出不穷, Node.js . GO . Python 不断地在挑战 PHP 的地位.这些 ...

  10. Linux之redis主从复制

    redis集群中的数据库复制就是通过主从同步实现的 主节点Master把数据分发给节点Salve 主从同步的好处在高可用, redis节点有冗余设计 redis主从同步的原理 1. 从服务器向主服务器 ...