字节跳动最新简单算法面试题
关注上方程序员小熊,回复算法、python、cpp、C++、512和1024,即可获取海量学习资料!
前言
大家好,我是熊哥。最近一位朋友去面试了字节跳动的后台开发的岗位,其一面的算法题,个人感觉比较简单。
分享一下,供大家参考,大家看看难不难,希望能对大家学习和找工作有所帮助。
查找最大值
有一个整型数组,数组元素不重复,数组元素先升序后降序,例如:1,3,5,7,9,8,6,4,2,请写一个函数找出数组最大的元素。
解题思路
咋一看本题,大家都会觉得很简单。很容易想到如下两种思路:
思路一:对数组按照从大到小或从小到大进行排序,那么第一个元素或最后一个元素就是最大的元素。
思路二:遍历整个数组,设置最大元素为第一个元素,边遍历边比较,同时更新最大元素。
尽管上述两种方法都可以,前者如果用快排的时间复杂度为O(nlgn),后者时间复杂度为O(n),其中 n 是数组的长度,但这样做,面试官可能就会让你回去等答复。
二分查找
本题可以采用二分法去做。原因:数组一端升序另一端降序。只要找到升序一端的最后一个元素即可。
示例
以 nums = {7, 8, 6, 5, 4}为例,如下图示:
由于数组是先升后降,所以第一个元素或最后一个元素不可能是最大元素,查找区间可设定为[1, numsSize - 2]。
比较中间元素与其下一个元素大小关系,缩小目标值的查找区间。
获取升序的一端的最后一个元素(目标值)。
注意
由于题目已提示数组元素不重复,因此不需要考虑有相同元素的情况。
Show me the Code
C
int getLargestNumInArray(int *nums, int numsSize) {if (nums == NULL || numsSize <= 0) {return -1;}int left = 1, right = numsSize - 2;while (left <= right) {int mid = left + ((right - left) >> 1);if (nums[mid] < nums[mid + 1]) {left = mid + 1;} else {right = mid - 1;}}return nums[left];
}
复杂度分析
时间复杂度:O(lgn),其中 n 为数组的长度;
空间复杂度:O(1),未开辟额外存储空间。
往期精彩回顾
快手最新面试真题
阿里云最新面试真题
阿里菜鸟网络一面最新笔试题
vivo 服务器开发工程师面试题
决定你是否能进字节的几道题
微信信用卡还款后台开发最新面试真题
更多精彩
关注公众号程序员小熊
点“赞”和“在看”哦
字节跳动最新简单算法面试题相关推荐
- prim算法_历时两月,终拿字节跳动offer,算法面试题分享「带答案」
欢迎关注专栏<Java架构筑基>--专注于Java技术的研究与分享! Java架构筑基zhuanlan.zhihu.com Java架构筑基--专注于Java技术的研究与分享! 后续文章 ...
- 谷歌给 Max Howell 出的一个简单算法面试题:翻转二叉树
这个问题是谷歌给 Max Howell 出的一个算法面试题 谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了. 谷歌给 Max ...
- block的理解 ios_iOS面试--字节跳动最新iOS开发面试题
序言 以下iOS面试题仅供参考,毕竟面试是不可控的,但懂得越多,自然机会越大! 字节一面内容: 1. 自我介绍 2. 介绍一下简历中的一个项目 3. 面向对象的三个要素 4. 多态? 5. Java, ...
- 记一道超级简单的 Java 算法面试题,但无人通过
点击上方蓝字设为星标 下面开始今天的学习- 作者:方志宏(已获作者授权转载,禁止二次转载) 来源:https://zhuanlan.zhihu.com/p/57859872 这可能是历史上最简单的一道 ...
- 记一道超级简单的算法面试题,90%的人没能完整答出来
作者:方志宏(已获作者授权转载,禁止二次转载) 来源:https://zhuanlan.zhihu.com/p/57859872 这可能是历史上最简单的一道 Java 算法面试题了. 题目很简单,完成 ...
- 2021最新汇总数据结构与算法面试题(准备面试的可以看看)
闲来无事整理了一下数据结构与算法面试题,准备面试的可以看看. 这份面试题汇总除了Java语言的,我还整理了C++和Golang语言的,无论你是做什么开发这份数据结构与算法面试题汇总都可以看,如果你是做 ...
- 数据结构与算法面试题(2022版)
序列号 内容 链接 1 Java基础知识面试题(2022版) https://blog.csdn.net/qq_43061290/article/details/124023797 2 Java集合容 ...
- 腾讯NLP算法面试题整
大家好,这里是面经酱- 今天来帮大家梳理网上公开面经中提到的腾讯NLP算法岗相关面试题,欢迎在 面经酱(www.mjj666.cn) 搜索最新面经,有其他公司.岗位的面经梳理需求请留言哦- 编程&am ...
- 微软的100道算法面试题(终结版)
前言 数据结构与算法的重要性已不言而喻,最近,我整理出十大经典排序算法.五大常用算法总结,今天特意整理出微软面试的100题,若有不足之处,欢迎指正!由于篇幅过长,前30道题目写在上一篇,大家可以进我的 ...
- 数据结构经典算法面试题
转自:http://hi.baidu.com/geogre_jsj/blog/item/e4b98fd2aab5aa3611df9b92.html 由于这些题,实在太火了.所以,应广大网友建议要求,在 ...
最新文章
- Java基础第十三天总结
- Linux frame buffer 编程 -- fb基本操作
- CodeForces - 224C. Bracket Sequence (栈模拟)简单做法
- 不吃不喝,两周业余时间研究(cisco SCE CM )
- 面试题解(4):求排列、组合
- 大学英语期末考计算机上答卷,英语期末考试总结范文(精选5篇)
- eclipse终止端处的加载主类错误
- java项目怎么使用js插件_Intro.js 分步向导插件使用方法 Web程序 - 贪吃蛇学院-专业IT技术平台...
- IP地址的分类,五分类编制CIDR以及子网的划分和子网掩码
- json html api文档,插件 jQuery.jsonview 中文 API 文档
- 2019上半年教资综合素质——主观题
- microbiomeViz:绘制lefse结果中Cladogram
- 7654:等差数列末项计算
- 【专题】我国银行系科技子公司比较研究
- java多线程学习笔记。
- 优秀课程案例:使用Scratch制作一个射击类游戏-360度旋转射击!
- 什么是独享锁/共享锁_java培训
- 第一阶段(admin02-day01)磁盘分区,挂载,交换分区
- Glidedsky系列—爬虫CSS反爬
- my97 datepicker 自定义事件