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;} 
}



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/330917.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2018年不能错过的 14 个 Java 库

转载自 2018年不能错过的 14 个 Java 库下面是整理给你的 2018 年不应该错过的 14 个 Java 库包清单&#xff0c;多多少少大家应该都接触过一些&#xff0c;如果还没听过那就OUT了。GuiceGuice是一个Java 6以上支持依赖注入框架。由谷歌提供。OkHttpHTTP是现代网络的通讯方式。…

Spring MVC Boot Cloud 技术教程汇总

转载自 Spring MVC & Boot & Cloud 技术教程汇总昨天我们发布了Java成神之路上的知识汇总&#xff0c;今天继续。 Java成神之路技术整理&#xff08;长期更新&#xff09; 以下是Java技术栈微信公众号发布的关于 Spring/ Spring MVC/ Spring Boot/ Spring Cloud 的技术…

group by分组、having() 筛选组的用法

【1】选出 除语文学科外&#xff0c;且学科平均分大于60 的每个学科的最高最低分&#xff1b;

Java成神之路技术整理

转载自 Java成神之路技术整理以下是Java技术栈微信公众号发布的所有关于 Java 的技术干货&#xff0c;会从以下几个方面汇总&#xff0c;本文会长期更新。 Java 基础篇Java 集合篇Java 多线程篇Java JVM篇Java 进阶篇Java 新特性篇Java 工具篇Java 书籍篇 Java基础篇 8张图带你…

RFC+JSF术语

RFC 请求注解&#xff08;Request For Comments&#xff09; JSF JavaServer Faces (JSF) is a Java specification for building component-based user interfaces for web applications.

图解 5 种 Join 连接及实战案例!(inner/ left/ right/ full/ cross)

转载自 图解 5 种 Join 连接及实战案例&#xff01;&#xff08;inner/ left/ right/ full/ cross&#xff09; Join 连接在日常开发用得比较多&#xff0c;但大家都搞清楚了它们的使用区别吗&#xff1f;&#xff1f;一文带你上车~~ 内连接 inner join 内连接是基于连接谓词…

接口、多态

一.接口 1.接口的定义和使用 接口名&#xff1a;和类名一样&#xff0c;首字母大写 public interface 接口名{//接口中的成员&#xff0c;一般写一些抽象方法 } public class 类名 implements 接口名{//复写接口中所有的抽象方法 } 2.接口的成员热点&#xff1a; &#xff0…

基础笔试编程题(jz)

【1】计算某个单词在某文件中出现的次数. // 计算某个单词在某文件中出现的次数. public class WordCounter {private static int counter;private static String path System.getProperty("user.dir") File.separator "src" File.separator "com…

到底什么是 OAuth 2.0

转载自 到底什么是 OAuth 2.0 ? 一文秒懂&#xff01;- 理解OAuth 2.0OAuth是一个关于授权&#xff08;authorization&#xff09;的开放网络标准&#xff0c;在全世界得到广泛应用&#xff0c;目前的版本是2.0版。本文对OAuth 2.0的设计思路和运行流程&#xff0c;做一个简明…

在eclipse中创建maven项目错误的解决方法:Could not resolve archetype org.apache.maven.archetypes:maven-archetype-qu

当我们在ecipse安装 maven插件后&#xff0c; (how to install maven plugin named m2eclipse) You can install the lastest M2Eclipse release (1.7.0) by using the following update site from within Eclipse: http://download.eclipse.org/technology/m2e/releases 创建…

继承、抽象

继承、抽象 一.继承 1.继承解决的问题&#xff1a;共性抽取 子类中有共性的内容&#xff08;成员变量、成员方法&#xff09;抽取到父类中&#xff0c;子类可以直接使用父类非私有的成员。 2.继承的格式 public cLass 父类{//成员变量、构造方法、成员方法 }public class 子…

JDK 5 ~ 10 新特性倾情整理

转载自 JDK 5 ~ 10 新特性倾情整理最近连 JDK11都在准备发布的路上了&#xff0c;大家都整明白了吗&#xff1f;也许现在大部分人还在用6-8&#xff0c;8的新特性都没用熟&#xff0c;9刚出不久&#xff0c;10-11就不用说了。为了大家对JDK有一个全面的了解&#xff0c;下面我为…

Java 内存模型 JMM 详解

转载自 Java 内存模型 JMM 详解JMM简介 Java Memory Model简称JMM, 是一系列的Java虚拟机平台对开发者提供的多线程环境下的内存可见性、是否可以重排序等问题的无关具体平台的统一的保证。(可能在术语上与Java运行时内存分布有歧义&#xff0c;后者指堆、方法区、线程栈等内存…

多种代码块

代码块 1.概念 代码块其实就是一对{ }&#xff0c;根据其放的位置不同&#xff0c;它的特性也不同 2.分类 &#xff08;1&#xff09;构造代码块 位置&#xff1a;类中方法外 作用&#xff1a;提取构造方法中共性的代码&#xff0c;每次执行构造方法都会执行。 &#xff08;…

spring boot 入门-使用spring boot构建简单应用

目的&#xff1a;建立一个简单的联系人列表&#xff1b; 使用 spring boot maven 进行构建 【0】文件结构如下&#xff1a; 【1】pom.xml 如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.o…

object面试题

equals方法 public class Demo {public static void main(String[] args) {String s1 "abc";StringBuilder sb new StringBuilder("abc");//System.out.println(sb.append("a"));//s1是字符串,则equals为字符串比较内容,// 由于比较对象不为字…

Jodd - Java界的瑞士军刀轻量级工具包

转载自 Jodd - Java界的瑞士军刀轻量级工具包&#xff01; Jodd介绍 Jodd是对于Java开发更便捷的开源迷你框架&#xff0c;包含工具类、实用功能的集合&#xff0c;总包体积不到1.7M。 Jodd构建于通用场景使开发变得简单&#xff0c;但Jodd并不简单&#xff01;它能让你把事情做…

spring boot 入门荔枝

【0】README spring boot 的4个核心功能介绍&#xff1a; 1. 自动配置&#xff1a; 无需 java配置或 xml配置&#xff0c;spring boot 会自动配置bean &#xff1b; 2. 起步依赖 &#xff1a; 为项目提供依赖管理&#xff0c;特别是解决了 各个 依赖jar 包的兼容性问题&…

基本数据类型与字符串的转换

基本数据类型与字符串的转换 1.字符串转化成其他类型 口诀:需要转成什么类型就用什么类型的包装类调用方法 byte Byte short Short int Integer long Long char Character float Float double Double boolean Boolean2.其他类型转…

Tomcat Get请求的巨坑

转载自 Java程序员注意&#xff1a;Tomcat Get请求的巨坑&#xff01; Tomcat8.5&#xff0c;当Get请求中包含了未经编码的中文字符时&#xff0c;会报以下错误&#xff0c;请求未到应用程序在Tomcat层就被拦截了。 Tomcat报错&#xff1a; java.lang.IllegalArgumentExceptio…