Neither Minimum nor Maximum

easy array sorting

Problem

Given an integer array nums containing distinct positive integers, find and return any number that is neither the minimum nor the maximum value in the array, or -1 if there is no such number.

Inputnums = [3,2,1,4]
Output2
min is 1, max is 4; both 2 and 3 qualify, so any one of them is accepted.

def find_non_min_or_max(nums):
    if len(nums) < 3:
        return -1
    lo, hi = min(nums), max(nums)
    for x in nums:
        if x != lo and x != hi:
            return x
    return -1
function findNonMinOrMax(nums) {
  if (nums.length < 3) return -1;
  const lo = Math.min(...nums), hi = Math.max(...nums);
  for (const x of nums) {
    if (x !== lo && x !== hi) return x;
  }
  return -1;
}
class Solution {
    public int findNonMinOrMax(int[] nums) {
        if (nums.length < 3) return -1;
        int lo = nums[0], hi = nums[0];
        for (int x : nums) { lo = Math.min(lo, x); hi = Math.max(hi, x); }
        for (int x : nums) {
            if (x != lo && x != hi) return x;
        }
        return -1;
    }
}
int findNonMinOrMax(vector<int>& nums) {
    if (nums.size() < 3) return -1;
    int lo = *min_element(nums.begin(), nums.end());
    int hi = *max_element(nums.begin(), nums.end());
    for (int x : nums) {
        if (x != lo && x != hi) return x;
    }
    return -1;
}
Time: O(n) Space: O(1)