2017尼毕鲁笔试算法题
【1】题目: 给定一个无序数组,找到最长的单调自增子序列(不一定连续,但是顺序不能乱)的长度;
【2】看个荔枝:给定数组 [10, 9, 2, 5, 3, 7, 101, 18] 输出结果为 [2, 3, 7, 101]。。算法时间复杂度一般为 O(n^2) 也可以优化到 O(nlgn);
【3】算法思路:对无序数组做一次遍历 并找出最小最大值v1, v2及其下标i1, i2;下一次循环遍历的范围是在 [i1+1, i2-1] 这个范围内找出 最小最大值 及其下标,每次循环 counter += 2...... 算法结束标志是 i1 小于i2;且当 i1等于i2时 表明 单调自增子序列的长度是奇数,所以counter++;算法实现如下:下面算法的时间复杂度是 O(n^2);
// input: [10, 9, 2, 5, 3, 7, 101, 18]
// output: [2, 3, 7, 101]public class NiBiNuCycle {static int counter = 0;public static void main(String[] args) {
// int[] array = {10, 9, 2, 5, 3, 7, 101, 18};int[] array = {10, 90, 76, 12, 25, 36, 78, 99, 177, 132, 156};find(array, 0, array.length-1);System.out.println("result = " + counter);}static void find(int[] array, int i1, int i2) {int ci1=0, ci2=0; // ci1, ci2 是 i1 和 i2 的 copy// v1 v2 作为在范围 [i1, i2] 区域中的最小最大值.// while(i1<i2) {int v1 = Integer.MAX_VALUE, v2 = Integer.MIN_VALUE;ci1=i1; ci2=i2;for (int i = i1; i <= i2; i++) {if(array[i] > v2) {v2 = array[i];ci2 = i;} if(array[i] < v1) {v1 = array[i];ci1 = i;}}System.out.println("v1 = " + v1 + ", v2 = " + v2);i1 = ci1+1;i2 = ci2-1; counter += 2;}if(i1==i2) {counter++;} }
}
【4】O(nlgn)的时间复杂度的思路是:利用分治思想,下面给出伪代码,但源码未实现,仅供参考;
// input: [10, 9, 2, 5, 3, 7, 101, 18]
// output: [2, 3, 7, 101]// 此题的分治版本.(伪代码,源码未实现)
class MinMax {int i1; // 最小值的对应indexint i2; // 最大值的......public MinMax(int i1, int i2) {this.i1 = i1;this.i2 = i2;}public MinMax(){}
}
public class NiBiNuRecursion {static int counter = 0;static MinMax result;public static void main(String[] args) {int[] array = {10, 90, 76, 12, 25, 78, 99, 177, 132, 156};find(array, 0, array.length-1);System.out.println("result = " + counter);}// 分治算法.static MinMax find(int[] array, int i1, int i2) {if(i1<i2) {int center = (i1+i2)/2;MinMax a = find(array, i1, center);MinMax b = find(array, center+1, i2);merge(...); // 这里应该要做一次merge.} else return new MinMax(i1,i1);return result;}
}
2017尼毕鲁笔试算法题相关推荐
- LeetCode 547. Friend Circles--Python解法--笔试算法题
题目地址:Friend Circles - LeetCode There are N students in a class. Some of them are friends, while some ...
- 【实习笔试面试题】2013网易互联网实习笔试算法题-找出最大连续自然数个数
找出最大连续自然数个数 搜集者:江南烟雨 E-Mail:xiajunhust@gmail.com 本题为网易互联网暑期实习生笔试算法题. 凭记忆记录下来的题目,如违反网易版权请邮件联系,本人会删除. ...
- Re: 一著名软件公司的java笔试算法题!
主 题: Re: 一著名软件公司的java笔试算法题! 作 者: szlhj () 等 级: 信 誉 值: 95 所属论坛: Java J2SE / 基础类 问题点数: 20 回复 ...
- 秋招笔试算法题——电容充电
秋招笔试算法题--电容充电 牛客网<笔试真题精选2019> 字节跳动2018秋招笔试题4 [题目描述]有一台用电容组成的计算器,其中每个电容组件都有一个最大容量值(正整数). 对于单个电容 ...
- 目录:名企笔试 + 算法题
名企笔试:美团2016招聘笔试(股票交易日) 名企笔试:搜狐2016招聘笔试题(扎金花) 名企笔试:凤凰网2015招聘(二分查找) 名企笔试:4399游戏校招笔试题(快速排序) 名企笔试:蘑菇街201 ...
- LeetCode 92. Reverse Linked List II--Python 解法--反转部分链表--笔试算法题
题目地址:Reverse Linked List II - LeetCode Reverse a linked list from position m to n. Do it in one-pass ...
- 前端实习生笔试_一道来自美图的实习生前端笔试算法题
这道题目来源于我正在寻找实习机会的弟弟,他笔试的时候发挥不是很好,这道题目一直超时,就把题目拿过来问我有没有比较高效的做法.废话不多说,直接看题目吧. 题目描述 有一款叫做空间回廊的游戏,游戏中有着n ...
- 华为笔试c语言,华为笔试算法题汇总
本文为大家分享了华为2014笔试4道算法题,供大家参考,具体内容如下 1.通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤 ...
- 23届秋招阿里笔试算法题
import java.util.Scanner;//23届秋招阿里笔试第一题:二进制求解(100%) public class Main1 {public static void f1(int n) ...
最新文章
- linux子系统使用rstudio,linux 下安装Rstudio
- hadoop使用mapreduce统计词频_深圳嘉华学校之Hadoop简介(什么是Map-Reduce-Mapreduce-about云开发)...
- 手机腾讯视频android版插件,小程序1.6.5版更新,终于支持腾讯视频插件了
- 数据结构之迷宫问题求解(一)利用栈与递归求解出口
- [react] 为什么标签里的for要写成htmlFor呢?
- CCNA-Cisco-Packet-Tracerchs(思科官网)安装教程以及使用
- 如何解决在使用ElementUI时发现有些控件是英文的
- link标签引入.css文件(目的):适配不同屏幕
- postgresql TOAST存储方式
- MTK 驱动(78)----MTK 平台查看eMMC和DDR的工作频率
- 使用ecstore-sdk开发包制作易开店和启明星模板
- xp系统下如何安装windows phone 7的软件xap文件
- dcdc芯片效率不高的原因_浅析影响DC-DC转换器效率的主要因素
- git | 如何移除 Untracked files?
- 电脑没有使用计算机进入睡眠状态,电脑打不开,屏上显示:无视频输入,进入睡眠模式。怎么处理...
- apache beam java api_Apache Beam的基本概念
- subplot中的图例
- C++高阶 常对象和常函数
- 网站建设设计具体服务内容
- 年末IPO热潮掀起,国际永胜二度冲击港交所
热门文章
- 2020 ICPC 上海 Sum of Log 数位dp + 状态剪枝
- Codeforces Round #700 (Div. 2) C. Searching Local Minimum 交互二分
- Codeforces Round #698 (Div. 2)
- 【WC2019】数树【子集反演】【结论】【树形dp】【生成函数】【函数求导】【多项式全家桶】
- Codeforces Round #736 (Div. 1Div2)
- P3201-[HNOI2009]梦幻布丁【启发式合并,链表】
- jzoj5353-村通网【最小生成树】
- ssl提高组周六模拟赛【2018.9.23】
- 初一模拟赛总结(2019.6.15)
- HDU5528 - Count a * b