更新日志

10/28/20更新第二题。

正文

已经第无数次被DP锤爆了狗头QAQ。

  1. 走台阶。一次可以走1步,也可以走2步。但是不能连着走2步。计算走n级台阶的走法。

这一题我居然花了20分钟,真是被自己菜哭了。
用一个二维的dp数组,分别记录达到每一阶台阶的最后一步的方式。设置一下初始状态。状态转移过程如下

dp[i][0] = dp[i-1][0] + dp[i-1][1];
dp[i][1] = dp[i-2][0]; // 不能连着走两步
  1. 注意这一题所有的索引都是1-based。定义函数L(i) = j,要求j<i,且arr[j] > arr[i]。如果没有这样的j,则j为0。否则,选取距离i最近的j。定义函数R(i) = k,要求k>i,且arr[k] > arr[i]。如果没有这样的k,则k为0。否则,选取距离i最近的k。现在给定一个数组arr,要求返回max(L[i]*R[i])。

这一题只通过了68%的case,因为用的是暴力解(被自己菜哭了*2)。实际上解法是单调栈。

public class Main {int indexLR(int[] arr) {int n = arr.length;if (n < 3) return 0;Stack<Integer> front = new Stack();int[] L = new int[n];front.push(0);for (int i = 1; i < n; i++) {while (front.size() > 0 && arr[i] > arr[front.peek()])front.pop();int cur = 0;if (front.size() > 0)cur = front.peek() + 1;L[i] = cur;front.push(i);}Stack<Integer> back = new Stack();int[] R = new int[n];back.push(n-1);for (int i = n-2; i >= 0; i--) {while (back.size() > 0 && arr[i] > arr[back.peek()])back.pop();int cur = 0;if (back.size() > 0)cur = back.peek() + 1;R[i] = cur;back.push(i);}int res = 0;for (int i = 1; i < n-1; i++)res = Math.max(res,  L[i]*R[i]);return res;}public static void main(String[] args) {Main m = new Main();int[] arr = {5, 1, 0, 3, 4, 2};int res = m.indexLR(arr);// return 8, produced by number 0System.out.println(res); }}
  1. 给定一个数组,一个整型m。将m个该数组首尾相连。算max subarray(必须要取至少一个元素)。这一题的难点在于这个m可以很大,所以是不能暴力拼接的。另外就是arr[i]的取值也有可能很大,返回值不能用int,否则溢出。

在倒数3分钟调试了出来ORZ。代码量太大,导致bug有点多。
基本思路是分为3中情况。
(1)数组不需要拼接(走一遍),取最大值返回。这种情况对应m=1或者数组首尾有非常大的负数。
(2)数组只拼接一次,最大值出现的范围在第一个数组的末尾+第二个数组的开头。这种情况对应m=2或者数组一端有非常大的负数。
(3)数组需要拼接m次。但是不需要暴力拼接。算出数组的和,*(m-1)就可以得到中间部分的和。再加上(2)情况的和即可。这种情况对应m>=3。
这几种情况都是返回之前所有情况的最大值的。

  1. 给一个数组,一个整型t。需要把数组所有元素都变成t。可以进行的操作是把数组[l:r+1]的元素都增加1。计算达到目的的不同方法的种类。光改变操作的顺序是不算做不同方法的。

这题没做。时间不够了。

9/6字节校招研发岗位笔试相关推荐

  1. 今日头条2018校园春季招聘研发岗位笔试(第一场)经验

    笔试公司:今日头条 笔试岗位:后端开发 笔试时间:2018年3月24日19:00-21:00 笔试形式:牛客网在线做题 笔试回忆: 笔试总共五道题.是的,只有五道编码题,没有选择or填空. 第一题,输 ...

  2. 今日头条2018春季校园招聘研发岗位笔试编程题 - 题解

    由于24号头条笔试我还在回学校的路上,因此没有在笔试中做题,这些题目都是后来同学给我的,我做了下,不保证100%通过,因为我自己没在笔试中提交过.如果题目抄写有误或者说我的解法有误,或者你有更好的解法 ...

  3. 2018大疆校招软件岗位笔试题目(求有效工作时间)——未在线验证

    题目 在DJI的工时打卡计算系统中,一个工作日的定义是由工作当日当天的凌晨03:00:00开始,到隔天凌晨03:00:00(不包含)为止. 这其中,工作日当天的中午12:30:00到下午14:00:0 ...

  4. 芯动科技2023校招 FPGA岗位笔试

    9道题简答题 卡诺图化简,并画出对应cmos电路. 根据电路图写出逻辑表达式. 分析电路的建立时间和保持时间是否违例. 给出一段verilog代码分析有什么电路功能. 异步FIFO控制器,8位,32深 ...

  5. 【研发校招专场】云和恩墨2022届春季校招研发岗位持续招聘中!

  6. 今日头条2018春季校园招聘研发岗位笔试 题解 临时版

    前言 算算总分,98分,很难受... 临时版的题解都是只会把我的代码发上去,有问题的童鞋们可以留言,我尽力回答=w= 第一题 ...这题很诡异,我只过了80%的数据,用set写会TLE,用hash写会 ...

  7. 最后一周!4000+HC免笔试!字节跳动2022校招研发提前批倒计时

    临近八月,马上就快到各大公司秋招开启的黄金季啦! 但其实相比竞争最为激烈的秋招 还有一条通往offer的"捷径"--秋招提前批 字节跳动的研发提前批倒计时最后一周 还有同学没搭上「 ...

  8. 字节跳动2022校招研发提前批宣讲会,同学们最关心的10个问题

    字节跳动 2022 校招研发提前批 7 场宣讲会,已经全部结束啦,不知道你是否已经充分了解了字节跳动,选好了想去的岗位和团队呢? 如果你真的真的真的没有时间,错过了宣讲会的话,不要担心,我们整理了宣讲 ...

  9. Python Selenium 字节校招实习岗筛选

    最近常想,Python 可以到哪些岗位就职? 于是我便瞄到了字节跳动的校招网站 https://jobs.bytedance.com/campus/position?,想用 requests 模块来爬 ...

最新文章

  1. puppeteer爬虫的奇妙之旅
  2. MySQL的共享锁和独占锁
  3. struct file 结构体
  4. Jquery 每天记一点2009-7-2
  5. 【重定向 return “redirect:/***“的作用 】
  6. C++读取Json生成随机名字
  7. 已安装 SQL Server 2005 Express 工具。若要继续,请删除 SQL Server 2005 Express 工具
  8. VB中连接access数据库的几种方法
  9. 如何删除pdf中计算机属性,从 PDF 中删除敏感内容
  10. Ubuntu 部分截图
  11. 国外AI知名论坛资源网站
  12. openwrt 怎么进入串口_OpenWrt路由器读取串口数据,建立tcp服务
  13. pages.json tabBar[‘list‘][2][‘pagePath‘] “pages/contact/contect“ 需在 pages 数组中
  14. pyspark lit 常量
  15. 如何屏蔽百度右侧推荐和热搜
  16. nyoj248 BUYING FEED
  17. java大学生网上请假管理系统
  18. 7招教你释放 Linux 操作系统的磁盘空间
  19. 项目经验-Skype for business手机端内网无法访问
  20. 2022-11-08 cesium实现大坝放水和有流向的水

热门文章

  1. SCCM2012工作组PC安装客户端问题
  2. Eclipse 搭建struts2 spring3 hibernate3环境实战 待完善
  3. ipa包中图片进行了Compress之后的主要处理和作用
  4. Siege 3.0 Beta2 发布,压力测试工具
  5. 分布式数据库系统(DDBS) 概述
  6. 文本框怎么变大html,如何设置HTML文本框的大小?
  7. C++实现数组中求第K大数
  8. github oracle教程,GitHub 使用教程图文详解
  9. 胡说八道之贝尔曼最优解
  10. 脑细胞膜等效神经网路12分类实例