原文是这个. 讲的一个很简单的题目.
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、计算机网络、操作...
标题《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基础,面试官通常会关注应聘者的语法熟练度,包括但不限于变量、数据类型...
【程序员面试题】是程序员在求职过程中经常遇到的一种考核方式,尤其对于大型网络公司来说,面试题往往具有较高的难度和专业性。以下是一些常见的面试知识点: 1. **访问修饰符**: - 如果希望父类中的某个成员能...
Java面试题的使用非常简单,只需要下载文档,然后逐个解答每个面试题即可。在解答面试题时,需要注意对每个问题进行深入思考和分析,给出准确、清晰的答案和解释,以便让面试官更好地了解自己的能力和潜力。 总之,...
Java面试题广泛涵盖了基础语法、数据结构、算法、设计模式、框架、并发编程、数据库、网络、操作系统等多个方面。以下是一些常见面试题的解析: **第一组** 1. **烧绳计时问题**:这是一个经典的逻辑题。要计时1...
对于准备Java面试的求职者来说,理解和掌握这些概念至关重要。理解递归、循环、条件判断、数组操作和数学逻辑是Java程序员的基本功,而能够高效地实现这些算法则体现了开发者的编程能力和思考深度。在实际工作中,...
Java面试宝典是Java开发者在求职过程中不可或缺的参考资料,它涵盖了面试中经常出现的各种问题,旨在帮助应聘者全面准备并提升自身的技术能力。本宝典不仅包含基础的Java语法、面向对象设计、数据结构与算法等核心...