再来一道题目!! 一个整数的数组例如int a[]={3,5,6,7,9,11}查询数组中有没有比它前面元素都大,比它后面的元素都小的数,没有打印-1,有显示其索引3写出实现代码! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 /** * 一个整数的数组例如int a[]={3,5,6,7,9,11} * 查询数组中有没有比它前面元素都大,比它后面的元素都小的数,没有打印-1,有显示其索引 * 3 * 写出实现代码! * @author Administrator * */public class GetNumber { private int[] data; public GetNumber() { data=new int[]{2,5,3,12,6,41,5,81,82,96}; boolean f=false; int length=data.length-1; for(int i=1;i<data.length-1;i++) { int num = data[i]; if(num >getMax(0,i-1) && num < getMin(i+1,length)) { f=true; System.out.println(i); } } if(!f) { System.out.println(-1); } } /** * 查找指定区间的最大值 * @param start * @param end * @return */ public int getMax(int start,int end) { int max = data[start]; for(int i=start;i<=end;i++) { if(data[i]>max) { max=data[i]; } } return max; } /** * 查找指定区间的最小值 * @param start * @param end * @return */ public int getMin(int start,int end) { int min = data[start]; for(int i=start;i<=end;i++) { if(data[i]<min) { min=data[i]; } } return min; } public static void main(String[]args) { new GetNumber(); }} import java.io.IOException;import java.util.ArrayList;import java.util.List;/** * @author monkey */public class Test { public static void main(String[] args) { Test test = new Test(); int a[] = {25,5,234,67,89,250,660,890,900}; List<Integer> result = test.reverse(a); for( Integer temp : result ) { System.out.println(temp.intValue()); } } private List<Integer> reverse(int[] token) { int currentNumber = 0; List<Integer> list = new ArrayList<Integer>(); // 满足条件 for( int i = 1; i < (token.length - 1); i++ ) { boolean isLarger = true; boolean isSmaller = true; currentNumber = token[i]; for( int j = 0; j < i; j++ ) { if ( currentNumber < token[j] ) { isLarger = false; break; } } for( int j = i + 1; j < token.length; j++ ) { if ( currentNumber > token[j] ) { isSmaller = false; break; } } if( isLarger && isSmaller ) { list.add(i); // 添加该数的索引 } } if( list.size() == 0 ) { list.add(-1); // 不存在 } return list; }} 如果存在该数,则此数组相当于把一个有序数组循环移位了k次,所求即是移位之前的最后一个数可以用二分法查找,每次能扔掉一半,复杂度为log(n) public class GetNumber { private int[] data; public GetNumber() { boolean f=false; data = new int[] { 2, 5, 3, 12, 6, 41, 40, 81, 82, 96 }; for (int i = 1; i < data.length-1; i++) { if (data[i] > data[i - 1] && data[i] < data[i + 1]) { System.out.println(i - 1); f = true; } } if(!f){ System.out.println(-1); } } public static void main(String[] args) { new GetNumber(); } 发布本人做的一个java 关键字查询文档 学习java两个星期的小结和疑问,希望能和各位交流 关于java里如何连接数据库的问题 急急急:Java打印,设置打印纸大小 服务端如何获取客户端的代理服务器的信息? 怎么样通过java测试代理服务器的响应速度哈 [求助]帮帮真正的菜鸟吧~ catch 与 finally 存在矛盾吗? 大神求救。为什么把一堆程序封装成方法之后出现编译出现需要.class Applet无法嵌到HTML中。。。。 悲观锁和乐观锁分别在什么条件下使用? 关于eclipse问题``
/**
* 一个整数的数组例如int a[]={3,5,6,7,9,11}
* 查询数组中有没有比它前面元素都大,比它后面的元素都小的数,没有打印-1,有显示其索引
* 3
* 写出实现代码!
* @author Administrator
*
*/
public class GetNumber {
private int[] data;
public GetNumber()
{
data=new int[]{2,5,3,12,6,41,5,81,82,96};
boolean f=false;
int length=data.length-1;
for(int i=1;i<data.length-1;i++)
{
int num = data[i];
if(num >getMax(0,i-1) && num < getMin(i+1,length))
{
f=true;
System.out.println(i);
}
}
if(!f)
{
System.out.println(-1);
}
}
/**
* 查找指定区间的最大值
* @param start
* @param end
* @return
*/
public int getMax(int start,int end)
{
int max = data[start];
for(int i=start;i<=end;i++)
{
if(data[i]>max)
{
max=data[i];
}
}
return max;
}
/**
* 查找指定区间的最小值
* @param start
* @param end
* @return
*/
public int getMin(int start,int end)
{
int min = data[start];
for(int i=start;i<=end;i++)
{
if(data[i]<min)
{
min=data[i];
}
}
return min;
}
public static void main(String[]args)
{
new GetNumber();
}
}
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;/**
* @author monkey
*/public class Test { public static void main(String[] args) {
Test test = new Test();
int a[] = {25,5,234,67,89,250,660,890,900};
List<Integer> result = test.reverse(a);
for( Integer temp : result ) {
System.out.println(temp.intValue());
}
} private List<Integer> reverse(int[] token) {
int currentNumber = 0;
List<Integer> list = new ArrayList<Integer>(); // 满足条件
for( int i = 1; i < (token.length - 1); i++ ) {
boolean isLarger = true;
boolean isSmaller = true;
currentNumber = token[i];
for( int j = 0; j < i; j++ ) {
if ( currentNumber < token[j] ) {
isLarger = false;
break;
}
}
for( int j = i + 1; j < token.length; j++ ) {
if ( currentNumber > token[j] ) {
isSmaller = false;
break;
}
}
if( isLarger && isSmaller ) {
list.add(i); // 添加该数的索引
}
}
if( list.size() == 0 ) {
list.add(-1); // 不存在
} return list;
}
}
可以用二分法查找,每次能扔掉一半,复杂度为log(n)
public class GetNumber {
private int[] data; public GetNumber() {
boolean f=false;
data = new int[] { 2, 5, 3, 12, 6, 41, 40, 81, 82, 96 };
for (int i = 1; i < data.length-1; i++) {
if (data[i] > data[i - 1] && data[i] < data[i + 1]) {
System.out.println(i - 1);
f = true;
}
}
if(!f){
System.out.println(-1);
}
}
public static void main(String[] args) {
new GetNumber();
}