【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尼毕鲁笔试算法题相关推荐

  1. LeetCode 547. Friend Circles--Python解法--笔试算法题

    题目地址:Friend Circles - LeetCode There are N students in a class. Some of them are friends, while some ...

  2. 【实习笔试面试题】2013网易互联网实习笔试算法题-找出最大连续自然数个数

    找出最大连续自然数个数 搜集者:江南烟雨 E-Mail:xiajunhust@gmail.com 本题为网易互联网暑期实习生笔试算法题. 凭记忆记录下来的题目,如违反网易版权请邮件联系,本人会删除. ...

  3. Re: 一著名软件公司的java笔试算法题!

    主 题: Re: 一著名软件公司的java笔试算法题! 作 者:   szlhj () 等 级:   信 誉 值:   95 所属论坛:   Java J2SE / 基础类 问题点数:   20 回复 ...

  4. 秋招笔试算法题——电容充电

    秋招笔试算法题--电容充电 牛客网<笔试真题精选2019> 字节跳动2018秋招笔试题4 [题目描述]有一台用电容组成的计算器,其中每个电容组件都有一个最大容量值(正整数). 对于单个电容 ...

  5. 目录:名企笔试 + 算法题

    名企笔试:美团2016招聘笔试(股票交易日) 名企笔试:搜狐2016招聘笔试题(扎金花) 名企笔试:凤凰网2015招聘(二分查找) 名企笔试:4399游戏校招笔试题(快速排序) 名企笔试:蘑菇街201 ...

  6. 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 ...

  7. 前端实习生笔试_一道来自美图的实习生前端笔试算法题

    这道题目来源于我正在寻找实习机会的弟弟,他笔试的时候发挥不是很好,这道题目一直超时,就把题目拿过来问我有没有比较高效的做法.废话不多说,直接看题目吧. 题目描述 有一款叫做空间回廊的游戏,游戏中有着n ...

  8. 华为笔试c语言,华为笔试算法题汇总

    本文为大家分享了华为2014笔试4道算法题,供大家参考,具体内容如下 1.通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤 ...

  9. 23届秋招阿里笔试算法题

    import java.util.Scanner;//23届秋招阿里笔试第一题:二进制求解(100%) public class Main1 {public static void f1(int n) ...

最新文章

  1. linux子系统使用rstudio,linux 下安装Rstudio
  2. hadoop使用mapreduce统计词频_深圳嘉华学校之Hadoop简介(什么是Map-Reduce-Mapreduce-about云开发)...
  3. 手机腾讯视频android版插件,小程序1.6.5版更新,终于支持腾讯视频插件了
  4. 数据结构之迷宫问题求解(一)利用栈与递归求解出口
  5. [react] 为什么标签里的for要写成htmlFor呢?
  6. CCNA-Cisco-Packet-Tracerchs(思科官网)安装教程以及使用
  7. 如何解决在使用ElementUI时发现有些控件是英文的
  8. link标签引入.css文件(目的):适配不同屏幕
  9. postgresql TOAST存储方式
  10. MTK 驱动(78)----MTK 平台查看eMMC和DDR的工作频率
  11. 使用ecstore-sdk开发包制作易开店和启明星模板
  12. xp系统下如何安装windows phone 7的软件xap文件
  13. dcdc芯片效率不高的原因_浅析影响DC-DC转换器效率的主要因素
  14. git | 如何移除 Untracked files?
  15. 电脑没有使用计算机进入睡眠状态,电脑打不开,屏上显示:无视频输入,进入睡眠模式。怎么处理...
  16. apache beam java api_Apache Beam的基本概念
  17. subplot中的图例
  18. C++高阶 常对象和常函数
  19. 网站建设设计具体服务内容
  20. 年末IPO热潮掀起,国际永胜二度冲击港交所

热门文章

  1. 2020 ICPC 上海 Sum of Log 数位dp + 状态剪枝
  2. Codeforces Round #700 (Div. 2) C. Searching Local Minimum 交互二分
  3. Codeforces Round #698 (Div. 2)
  4. 【WC2019】数树【子集反演】【结论】【树形dp】【生成函数】【函数求导】【多项式全家桶】
  5. Codeforces Round #736 (Div. 1Div2)
  6. P3201-[HNOI2009]梦幻布丁【启发式合并,链表】
  7. jzoj5353-村通网【最小生成树】
  8. ssl提高组周六模拟赛【2018.9.23】
  9. 初一模拟赛总结(2019.6.15)
  10. HDU5528 - Count a * b