当前位置:   article > 正文

无序数组,找到左侧元素比它小,后侧元素比它大的元素_写一个代码找到数组里面左边比他小右边比他大的数

写一个代码找到数组里面左边比他小右边比他大的数
  1. // 无序数组,找到元素,它左边的元素都比它小,它右边的元素都比它大
  2. @Test
  3. public void findEleTest() {
  4. int[] arr = new int[]{1,2,3,9,5,6,10,11,13,15,17};
  5. findEle(arr);
  6. System.out.println(list);
  7. }
  8. public void findEle(int[] nums) {
  9. // 该数组存储元素i左侧最大的值
  10. int[] leftMax = new int[nums.length];
  11. // 该数组存储元素i右侧最小的值
  12. int[] rightMin = new int[nums.length];
  13. // 第一个和最后一个元素不需要管
  14. leftMax[1] = nums[0];
  15. rightMin[nums.length - 2] = nums[nums.length - 1];
  16. for (int i = 2,j = nums.length - 3; i < nums.length - 2; i++,j--) {
  17. leftMax[i] = Math.max(leftMax[i-1], nums[i-1]);
  18. rightMin[j] = Math.min(rightMin[j + 1], nums[j + 1]);
  19. }
  20. // 遍历判断找到符合条件的元素
  21. for (int i = 1; i < nums.length - 1; i++) {
  22. if (leftMax[i] <= nums[i] && nums[i] <= rightMin[i]) {
  23. list.add(nums[i]);
  24. }
  25. }
  26. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/227666
推荐阅读
相关标签
  

闽ICP备14008679号