原文是这个. 讲的一个很简单的题目.
http://www.iteye.com/topic/787888
我想到一个更简单一点的方法.
启发就是比较连续2组数的时候只需要比较有差别的那2个. 比如:
数据下标 0 1 2 和 1 2 3 比较的时候只需要比较 下标0 和下标3 的大小即可. 这样比较的次数是原来的1/3.
通过对其它的情况都考虑以后发现可以取一个基准点, 和一个差额, 当然必不可少的一个最大组合的下标.
实现的代码如下.
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
int[] arr = { 2, 5, -6, 12, 7, 15, 6, -10, 38 };
Test.find(arr);
}
public static void find(int[] data) {
/**
* make sure the length of data more than or equal 5;
*/
if (data.length <= 5)
return;
/**
* difference between current comparing data subscript
* and max subscript of data
*/
int diff = 0;
/**
* index of max subscript of data, can also be
* a array to record max combinations.
*/
int maxIdx = 0;
for (int i = 1; i < data.length - 2; i++) {
int bigger = data[i - 1] - data[i + 2];
if (diff + bigger > 0) {
diff += bigger;
} else {
maxIdx = i;
diff = data[i - 1] - data[i + 2];
}
}
System.out.println("maxIndex : " + maxIdx + ", data : " + data[maxIdx]
+ ", " + data[maxIdx + 1] + ", " + data[maxIdx + 2] + ". ");
}
}
benchmark 了一下. 速度比原来的实现要快一点. 100 000次 1515ms 比2406ms
分享到:
相关推荐
### Java经典面试题汇总 #### 一、面向对象与面向过程的区别 **面向对象**与**面向过程**是编程中两种不同的思想模式。 1. **面向过程**: - **特点**:关注解决问题的具体步骤和流程。 - **示例**:如洗衣服的...
【Java基础知识面试题详解】 1. **Java概述** - 编程的定义:编程是用特定编程语言解决特定问题的过程,将人类的思考转化为计算机能理解的代码。 - Java简介:Java是一门面向对象的编程语言,具有C++的优点,但...
Java工程师的校招面试是一项全面评估候选人技术能力和潜在素质的过程。这份面试题库涵盖了广泛的Java技术领域,包括JavaSE(标准版)、JavaEE(企业版)、Java Web、JDBC(Java数据库连接)、XML、计算机网络、操作...
《JAVA面试题大全.pdf》这份资料为求职者提供了一个全面复习和准备Java面试的平台。它不仅仅是一份简单的面试题集,更是一本关于如何有效面试,以及如何在面试中展示自己的指南。 首先,资料强调了在面试过程中,...
标题《200+最常见Java面试题参考答案(嗯嗯).pdf》说明这是一份包含了200多道最常见Java面试问题及其参考答案的PDF文档。Java作为一门编程语言,在全球范围内被广泛使用,尤其在企业级应用和安卓开发方面表现出色。...
感谢信是一个与招聘团队联系的最有力工具。为了体现你的真诚可信,你需要对每个成员分别表达你的谢意,要避免千篇一律的内容。尝试把重点放在与面试你的每个人的交流方面。 值得大家思考的是:求职者,特别是很多...
Google面试题往往不是简单的代码实现,而是更注重候选人的思考过程和解决问题的方法,以此来评估他们的潜力和适应性。 标签 "书籍教程-程序语言" 表明这份资料可能是一本教程或者集合,其中包含的面试题可能涵盖...
### 银海软件Java面试题解析 #### Error与Exception有什么区别? 在Java语言中,`Error` 和 `Exception` 都是 `Throwable` 的子类,用于表示程序执行过程中出现的问题。它们之间的主要区别在于: - **Error** ...
这份"Java面试题大全"旨在帮助开发者在求职过程中更好地准备面试,提升自己的技术水平和竞争力。 1. **基础语法**:这部分通常会涉及到变量、常量、运算符、流程控制语句(如if-else、switch-case、for、while)、...
在安徽的IT行业中,尤其是针对Java工程师这一职位,面试题目的设计往往反映了企业对候选人的技术能力、逻辑思维以及问题解决能力的要求。以下是对这些标签和文件内容的详细解析: 一、Java基础知识 面试中,Java的...
这些同学说自己也做了精心准备,网上搜集了不少Java面试题。 然而实际去互联网公司面试才发现,人家问的,和你准备的根本对不上号,面试现场经常弥漫着尴尬的气氛,最后的面试结果也是不言而喻! 先来体验一个真实的...
此外,Java面试题中还会涉及内存管理(如垃圾回收)、异常处理、集合框架、IO流、多线程同步、网络编程、设计模式等重要内容。熟悉并理解这些知识点对于Java程序员在面试中取得成功至关重要,特别是对于想要进入大厂...
针对“Java面试题集锦”,我们可以深入探讨Java编程的核心概念、技术框架以及面试中常见的问题,帮助求职者更好地准备面试。 首先,对于Java基础,面试官通常会关注应聘者的语法熟练度,包括但不限于变量、数据类型...
在当前的IT行业,掌握Java编程语言是很多求职者的必备技能,而参加技术面试时,面试官常常会出一些具有一定难度的Java面试题来考察应聘者的编程能力、逻辑思维和对基础知识的掌握程度。本文档收集了50道涵盖多个方面...
- **转换过程**:通过中序遍历的方式访问二叉搜索树的每一个节点,并将其连接起来形成一个排序的双向链表。这一过程中,需要注意维护双向链表的前后指针关系。 - **应用场景**:当需要频繁地对有序数据进行访问时,...
【程序员面试题】是程序员在求职过程中经常遇到的一种考核方式,尤其对于大型网络公司来说,面试题往往具有较高的难度和专业性。以下是一些常见的面试知识点: 1. **访问修饰符**: - 如果希望父类中的某个成员能...
本文将根据给定的信息,深入探讨“张孝祥正在整理Java就业面试题大全”背后的含义以及如何有效地准备Java面试。 #### 关于“张孝祥正在整理Java就业面试题大全” 标题“张孝祥正在整理Java就业面试题大全”明确...
Java面试题的使用非常简单,只需要下载文档,然后逐个解答每个面试题即可。在解答面试题时,需要注意对每个问题进行深入思考和分析,给出准确、清晰的答案和解释,以便让面试官更好地了解自己的能力和潜力。 总之,...
以下将结合给定的文件内容,详细解析这50道Java面试题中的前五个问题,这些问题旨在考察面试者对Java基础知识和编程逻辑的理解与掌握。 首先,我们来探讨兔子繁殖问题。这道题其实是斐波那契数列的一个经典应用。...