2021 vivo校招提前批笔试解析
2021 vivo校招提前批笔试解析
- 1、种花问题
- 情况1:排除端点
- 情况2:考虑端点
- 情况3:花园大小只有1
- 2、质量测试
- 3、合并流水线
题目不能完整的记下来,目测后面vivo会把题目放到牛客上,这里先给一些解析
1、种花问题
刚发现原来是Leetcode上的605题
假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回False。示例 1:输入: flowerbed = [1,0,0,0,1], n = 1
输出: True
示例 2:输入: flowerbed = [1,0,0,0,1], n = 2
输出: False
注意:数组内已种好的花不会违反种植规则。
输入的数组长度范围为 [1, 20000]。
n 是非负整数,且不会超过输入数组的大小。
刚开始我以为是动态规划问题,浪费了很多时间,后来发现是一个找规律的问题。
解题思路:
情况1:排除端点
排除端点外,我们假设可以种花的区域被花包围,也就是中间连续的0被1包围。
像下面这种情况,显然是不能种花的
1 0 0 1;
而这种情况:
1 0 0 0 1 可种1朵花
1 0 0 0 0 1 可种1朵花
1 0 0 0 0 0 1 可种2朵花
1 0 0 0 0 0 0 1 可种2朵花
1 0 0 0 0 0 0 0 1 可种3朵花
1 0 0 0 0 0 0 0 0 1 可种3朵花
不难发现,每隔着2个0,就会有多种一朵花的机会。
公式就很好推算了,中间有n个0时,可以种(n-1)/2朵花
情况2:考虑端点
当某个端点为0时,我们可以多种一朵花
1 0 0 可种1朵花
1 0 0 0 可种1朵花
1 0 0 0 0 可种2朵花
1 0 0 0 0 0 可种2朵花
1 0 0 0 0 0 0 可种3朵花
1 0 0 0 0 0 0 0 可种3朵花
情况3:花园大小只有1
当花园大小为1时,我们不能得到一个区间,我们只有一个点,对这个情况要特殊处理
综上所述,我们可以得到以下代码
public static void main(String[] args) {Scanner in=new Scanner(System.in);int len=in.nextInt();int plant[]=new int[len];int curr=0;while (curr<len){plant[curr++]=in.nextInt();}slove(plant);}private static void slove(int nums[]){if(nums.length==1){int x=nums[0]==0?1:0;System.out.println(x);return;}int slow=0;//0int quick=0;//1int count=0;while (slow<nums.length&&quick<nums.length){while (slow<nums.length&&nums[slow]==1){slow++;}quick=slow;while (quick<nums.length&&nums[quick]==0){quick++;}if(quick-slow>=3){count+=counter(quick-slow);}//考虑端节点if((slow==0||quick==nums.length)&&(quick-slow>=2)){count++;}slow=quick;}System.out.println(count);}//计算两个空白字符之间的private static int counter(int sub){return (sub-1)/2;}
2、质量测试
题目大意是摔手机,跌落测试来测试手机质量。
这个题就不多说了,一道经典的Leetcode题:Leetcode-887
3、合并流水线
题目大意:
输入:n表示有几条流水线
输出:按照升序排列的,合并后的流水线
很简单,是一个排序问题。不过本题目中要求使用链表。而且源码中还留着一个静态函数,用于合并新输入的链表。
解题思路:使用小顶堆对输入的几条流水线合并,然后弹出,合并到一个流水线中。然后在那个合并函数那里,对两个链表重新合并,按照从小到达插入
public class Main {private static ListNode dummyNode=new ListNode(-1);private static ListNode currNode=dummyNode;public static void main(String[] args) {currNode=dummyNode;List<String> lines = new ArrayList<>();Scanner scanner = null;try {scanner = new Scanner(System.in);int totalLine=Integer.valueOf(scanner.nextLine());while (totalLine>0) {lines.add(scanner.nextLine());totalLine--;// write your code here}PriorityQueue<Integer> queue=new PriorityQueue<>();for (int i=0;i<lines.size();i++){String[] nums=lines.get(i).split(" ");for(String num:nums){queue.offer(Integer.valueOf(num));}}while (queue.isEmpty()==false){currNode.next=new ListNode(queue.poll());currNode=currNode.next;}} finally {if (scanner != null) {scanner.close();}}// TODO outputListNode curr=dummyNode.next;while (curr!=null){if(curr.next==null){System.out.print(curr.val);}else {System.out.print(curr.val+" ");}curr=curr.next;}}static class ListNode {int val;ListNode next;ListNode(int x) {val = x;}}private static ListNode mergeNodes(ListNode head ) {dummyNode=merge(dummyNode.next,head);return dummyNode.next;}private static ListNode merge(ListNode n1,ListNode n2){if(n1==null||n2==null){return n1==null?n2:n1;}ListNode newDummy=new ListNode(-1);ListNode curr=newDummy;while(n1!=null&&n2!=null){int val=n1.val;if(n1.val>n2.val){val=n2.val;n2=n2.next;}else {n1=n1.next;}curr.next=new ListNode(val);curr=curr.next;}curr.next=n1==null?n2:n1;return newDummy.next;}
}
vivo给的题目中,代码很多,所以我这里也写得比较多。
2021 vivo校招提前批笔试解析相关推荐
- VIVO校招提前批算法工程师笔试题目 2019/6/4
总共有三道题: 很简单的一道题,给A,B两个数组,输出出现在A中而没有出现在B中的元素,输出元素前后顺序不变,遍历一遍就OK了. 反转链表的第M个至第N个元素 0-1 背包 第一题 第一题很简单,直接 ...
- C语言vivo笔试题目及答案,vivo2020笔试真题,vivo2020校招提前批火热进行中!
原标题:vivo2020笔试真题,vivo2020校招提前批火热进行中! vivo2021校园招聘提前批 简历投递截止时间:2020年6月6日12:00 现在,你可以登录vivo校园招聘官方网站 ht ...
- VIVO 提前批笔试及面试经历
VIVO大法好 Vivo提前批笔试及面试复盘 首先是笔试 然后是面试环节: 一面,技术面: 然后是HR面 总结 Vivo提前批笔试及面试复盘 首先是笔试 时间60分钟,三道编程题,不允许跳出网页使用本 ...
- 2021届招银网络科技提前批笔试
2021届招银网络科技提前批笔试 写在前面: 第一次参加笔试,结果不重要,就当作是积累经验啦~ 有一些坑记录下来,后面的人看到也可以注意一下: 1.每部分题目是不能往回翻页的,就是说你不能想着做完了后 ...
- 大疆2019校招提前批机器学习算法工程师在线笔试题目回忆版
最后还涉及到两道16分的在线编程题目,但是我忘记了,故没有列出来,望大家原谅2333. 大疆2019年校招提前批机器学习算法工程师B卷题目回忆版 1 考察关于各种激活函数 sigmoid.tanh.r ...
- 卷起来了!校招提前批爆发期!
点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 7月正式进入很多公司的2023届校招提前批启动阶段!据Amusi了解,目前腾讯(技术大咖).字节.百度等60 ...
- 8月!校招提前批的黄金期和末尾期!
点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 8月已进入校招提前批的黄金期和末尾期!校招时间表如下图所示(建议收藏): 目前字节.百度等100多家公司都已 ...
- 多益网络2022届校招提前批全面启动【免筛推荐码QEAQU】
多益网络2022届校招提前批全面启动![免筛推荐码QEAQU] 互联网百强企业:中国十大游戏研发商和运营商之一 [提前批优势]直通笔试!不影响正式批次,多一次投递机会 [岗位]策划类.程序类.美术类. ...
- 大量CV职位!奥比中光2020届校招提前批内推启动!
点击我爱计算机视觉标星,更快获取CVML新技术 内 · 推 奥比中光2020届校园招聘 提前批[内部推荐] !!!正式启动!!! 快人一步锁定offer 海投的迷茫.宣讲会的焦灼.双选会的拥挤 通通与 ...
最新文章
- 过去一个月发生了什么,C++再次真香了吗?
- python入门教程完整版(懂中文就能学会)-Python入门教程完整版(懂中文就能学会)...
- c语言扫描图片的坐标,tc 如何在指定坐标处 输出bmp图片??
- 笔试算法题(28):删除乱序链表中的重复项 找出已经排好序的两个数组中的相同项...
- Python+KNN算法判断单词相似度小案例
- python decorator. decorator_decorator在Python中的作用
- JavaScript中调皮的undefined
- ORACLE 指令基础学习
- linux中ftp禁止匿名,linux下禁止root和匿名用户登录ftp
- html怎么设置火狐ie兼容模式,火狐浏览器兼容模式如何设置?火狐浏览器兼容模式设置方法分享...
- 工具1:DNS隧道检测工具BotDAD
- 选择排序之简单选择排序
- python学习之os模块
- 硬件笔记(2)---- 贴片电容材质NPO与X7R、X5R、Y5V、Z5U的区别
- Beta阶段事后诸葛亮分析
- bootstrap 元素
- pandas学习task02 pandas基础
- 从头开始构建,DeepMind新论文用伪代码详解Transformer
- 黑链/暗链/防K黑链代码
- C语言创建24位真彩色位图
热门文章
- 中国电子信息产业发展研究院、德国弗劳恩霍夫协会 IOSB-INA、美国通用智能系统和技术公司合作谅解备忘录签约仪式在京举行
- 大数据新常态 读书笔记(一)
- 甲骨文公司,Sun公司
- 如何在不同的 ViewController 之间传递信息
- 天干地支计算公式_什么是天干地支?天干地支有哪几个?计算方法是什么?
- JavaScript中 queue(队列)的应用与实现
- klt跟踪源码 matlab,Kanade-Lucas-Tomasi(KLT)进行目标跟踪
- python加载数据集卡住 dmesg报错Nvidia xid31
- yum 安装oraclejdk_linux服务器上安装jdk的两种方法(yum+下载包)
- python 水仙花