最后一道算法题的Java代码,大佬轻喷 public class _1找出数组中比左边大比右边的小的元素 { public static void main(String[] args) { int[] arr = new int[]{2, 3, 1, 8, 9, 20, 12}; method(arr); } public static void method(int[] arr) { int len = arr.length; int[] rightMin = new int[len]; // 将最后一个元素初始划为最小元素 int curMin = arr[len - 1]; // 从倒数第二个开始计算 for (int i = len - 2; i >= 0; i--) { rightMin[i] = curMin; // 如果当前值比最小值小,就对curMin进行更新 if (arr[i] < curMin) curMin = arr[i]; } // 然后从左向右找每个元素的左边最大值 int[] leftMax = new int[len]; int curMax = arr[0]; // 第一个和最后一个元素不计入结果 for (int i = 1; i < len - 1; i++) { if (arr[i] > curMax) { if (arr[i] < rightMin[i]) { System.out.print(arr[i] + " "); } // 不要忘记更新最大值 curMax = arr[i]; } } } }