https://blog.csdn.net/beiyeqingteng/article/details/7167823?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param
public List<Integer> findNums(int[] nums) {
List<Integer> res = new ArrayList<>();
int n = nums.length;
int[] rightMin = new int[n];
int[] leftMax = new int[n];
leftMax[0] = nums[0];
for (int i = 1; i < n; i++) {
if (nums[i] > leftMax[i-1]) {
leftMax[i] = nums[i];
} else {
leftMax[i] = leftMax[i-1];
}
}
rightMin[n-1] = nums[n-1];
for (int i = n-2; i >= 0; i--) {
if (nums[i] < rightMin[i+1]) {
rightMin[i] = nums[i];
} else {
rightMin[i] = rightMin[i+1];
}
}
for (int i = 0; i < n; i++) {
if (leftMax[i] == rightMin[i]) {
res.add(leftMax[i]);
}
}
return res;
}
public List<Integer> findNum(int[] nums) {
int[] exam = {7, 10, 2, 6, 19, 22, 32};
if (nums.length == 1)
return Arrays.asList(nums[0]);
int n = nums.length;
List<Integer> res = new ArrayList<>();
int[] rightMin = new int[n];
rightMin[n-1] = nums[n-1];
for (int i = n-2; i >= 0; i--) {
if (nums[i] < rightMin[i+1])
rightMin[i] = nums[i];
else
rightMin[i] = rightMin[i+1];
}
int leftMax = Integer.MIN_VALUE;
for (int i = 0; i < n; i++) {
if (leftMax <= nums[i]) {
leftMax = nums[i];
if (leftMax == rightMin[i]) {
res.add(leftMax);
}
}
}
return res;
}