某外企 机试题

如果数组中存在这样的数,这个数比它左边的所有的数大,并且比它右边的所有的数小,返回它的索引;如果不存在,返回-1。
例如:int[] arr = {5,3,6,2,7,10,8,12}; 7比它左边的数都大,比它右边的数都小,所以返回4

 

我的解答

我也写了一个,貌似很复杂,只是我想正好学习JAVA,当做练习,熟悉些特性吧
其实核心就是getIndices,这个方法返回所有符合条件的Index,
思想是先找到所有大于左边所有的数的那些数
再找到所有小于右边所有的数的那些数
两个条件都符合的,就是我们要找的
如果只需要第一个,取返回数组的第一个就OK了
没找到符合条件的时候,就返回-1

 

运行结果

getIndices(new int[]{5,3,6,9,7,10,5,12}):
-1
getIndices(new int[]{5,3,6,2,7,10,8,12}):
4
getIndices(new int[]{5,3,6,9,7,10,8,12}):
2
getIndices(5,3,6,2,7,10,5,12):
-1
getIndices(3,4,5,6,7,8,9,10):
[1, 2, 3, 4, 5, 6]
getIndices(3,4,7,13,10,15,17,16):
[1, 2, 5]
getIndicesAnother(new int[]{5,3,6,9,7,10,5,12}):
-1
getIndicesAnother(new int[]{5,3,6,2,7,10,8,12}):
4
getIndicesAnother(new int[]{5,3,6,9,7,10,8,12}):
2
getIndicesAnother(5,3,6,2,7,10,5,12):
-1
getIndicesAnother(3,4,5,6,7,8,9,10):
[1, 2, 3, 4, 5, 6]
getIndicesAnother(3,4,7,13,10,15,17,16):
[1, 2, 5]

 

更多,请参见:http://topic.csdn.net/u/20090525/17/06b40494-020a-4fdc-bfbf-4118e2465442.html?seed=882665728

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值