关注上方程序员小熊,回复算法、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. 由于数组是先升后降,所以第一个元素或最后一个元素不可能是最大元素,查找区间可设定为[1, numsSize - 2]。

设置查找区间
  1. 比较中间元素与其下一个元素大小关系,缩小目标值的查找区间。

缩小目标值的查找区间

继续缩小查找区间
  1. 获取升序的一端的最后一个元素(目标值)。

获取目标值

注意

由于题目已提示数组元素不重复,因此不需要考虑有相同元素的情况。

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 服务器开发工程师面试题

决定你是否能进字节的几道题

微信信用卡还款后台开发最新面试真题

更多精彩

关注公众号程序员小熊

微信公众号

点“赞”和“在看”哦

字节跳动最新简单算法面试题相关推荐

  1. prim算法_历时两月,终拿字节跳动offer,算法面试题分享「带答案」

    欢迎关注专栏<Java架构筑基>--专注于Java技术的研究与分享! Java架构筑基​zhuanlan.zhihu.com Java架构筑基--专注于Java技术的研究与分享! 后续文章 ...

  2. 谷歌给 Max Howell 出的一个简单算法面试题:翻转二叉树

    这个问题是谷歌给 Max Howell 出的一个算法面试题 谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了. 谷歌给 Max ...

  3. block的理解 ios_iOS面试--字节跳动最新iOS开发面试题

    序言 以下iOS面试题仅供参考,毕竟面试是不可控的,但懂得越多,自然机会越大! 字节一面内容: 1. 自我介绍 2. 介绍一下简历中的一个项目 3. 面向对象的三个要素 4. 多态? 5. Java, ...

  4. 记一道超级简单的 Java 算法面试题,但无人通过

    点击上方蓝字设为星标 下面开始今天的学习- 作者:方志宏(已获作者授权转载,禁止二次转载) 来源:https://zhuanlan.zhihu.com/p/57859872 这可能是历史上最简单的一道 ...

  5. 记一道超级简单的算法面试题,90%的人没能完整答出来

    作者:方志宏(已获作者授权转载,禁止二次转载) 来源:https://zhuanlan.zhihu.com/p/57859872 这可能是历史上最简单的一道 Java 算法面试题了. 题目很简单,完成 ...

  6. 2021最新汇总数据结构与算法面试题(准备面试的可以看看)

    闲来无事整理了一下数据结构与算法面试题,准备面试的可以看看. 这份面试题汇总除了Java语言的,我还整理了C++和Golang语言的,无论你是做什么开发这份数据结构与算法面试题汇总都可以看,如果你是做 ...

  7. 数据结构与算法面试题(2022版)

    序列号 内容 链接 1 Java基础知识面试题(2022版) https://blog.csdn.net/qq_43061290/article/details/124023797 2 Java集合容 ...

  8. 腾讯NLP算法面试题整

    大家好,这里是面经酱- 今天来帮大家梳理网上公开面经中提到的腾讯NLP算法岗相关面试题,欢迎在 面经酱(www.mjj666.cn) 搜索最新面经,有其他公司.岗位的面经梳理需求请留言哦- 编程&am ...

  9. 微软的100道算法面试题(终结版)

    前言 数据结构与算法的重要性已不言而喻,最近,我整理出十大经典排序算法.五大常用算法总结,今天特意整理出微软面试的100题,若有不足之处,欢迎指正!由于篇幅过长,前30道题目写在上一篇,大家可以进我的 ...

  10. 数据结构经典算法面试题

    转自:http://hi.baidu.com/geogre_jsj/blog/item/e4b98fd2aab5aa3611df9b92.html 由于这些题,实在太火了.所以,应广大网友建议要求,在 ...

最新文章

  1. Java基础第十三天总结
  2. Linux frame buffer 编程 -- fb基本操作
  3. CodeForces - 224C. Bracket Sequence (栈模拟)简单做法
  4. 不吃不喝,两周业余时间研究(cisco SCE CM )
  5. 面试题解(4):求排列、组合
  6. 大学英语期末考计算机上答卷,英语期末考试总结范文(精选5篇)
  7. eclipse终止端处的加载主类错误
  8. java项目怎么使用js插件_Intro.js 分步向导插件使用方法 Web程序 - 贪吃蛇学院-专业IT技术平台...
  9. IP地址的分类,五分类编制CIDR以及子网的划分和子网掩码
  10. json html api文档,插件 jQuery.jsonview 中文 API 文档
  11. 2019上半年教资综合素质——主观题
  12. microbiomeViz:绘制lefse结果中Cladogram
  13. 7654:等差数列末项计算
  14. 【专题】我国银行系科技子公司比较研究
  15. java多线程学习笔记。
  16. 优秀课程案例:使用Scratch制作一个射击类游戏-360度旋转射击!
  17. 什么是独享锁/共享锁_java培训
  18. 第一阶段(admin02-day01)磁盘分区,挂载,交换分区
  19. Glidedsky系列—爬虫CSS反爬
  20. my97 datepicker 自定义事件

热门文章

  1. 获取地址栏的最后一个文件
  2. Oracle odi 数据表导出到文件
  3. 数据库 基础学习7— 数据库编程
  4. 数据驱动编程之表驱动法
  5. OCS UCCA 开发笔记(Unified Communications Client API)
  6. PETSHOP模式IDAL,SQLSERVERDAL,存储过程以及模型类代码的生成工具
  7. Python 模拟简单区块链
  8. SQL Server里的自旋锁介绍
  9. Marlin 溫度感應器 數值轉換對應表
  10. JavaScript案例精解(一)