如果数组中存在这样的数,这个数比它左边的所有的数大,并且比它右边的所有的数小,返回它的索引;如果不存在,返回-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