1
var minimumDeletions = function (nums) {2
if (nums.length === 1) return 1;8
min = Math.min(n, min);9
max = Math.max(n, max);12
// obj to store no. of elements to remove if we start from left and if we start from right17
// left[0]-> no. of elements upto min element if we start from left18
// left[1]-> no. of elements upto max element if we start from left19
// right[0]-> no. of elements upto min element if we start from right20
// right[1]-> no. of elements upto max element if we start from right21
for (let i = 0; i < nums.length; i++) {22
if (nums[i] === max) {23
obj["left"][1] = i + 1;24
obj["right"][1] = nums.length - i;26
if (nums[i] === min) {27
obj["left"][0] = i + 1;28
obj["right"][0] = nums.length - i;32
const set = new Set();33
// if no. of elements to remove min element from left is less than right34
if (obj["left"][0] < obj["right"][0]) {36
total += obj["left"][0];40
total += obj["right"][0];42
// if no. of elements to remove max element from right is less than left43
if (obj["left"][1] < obj["right"][1]) {45
total += obj["left"][1];49
total += obj["right"][1];52
// if both elements are to be removed from diff direction inorder to remove lesser element54
// one from left and one from right(total), min/max element lies after max/min ele from left,min/max element lies after max/min ele from right56
return Math.min(total, Math.max(...obj["left"]), Math.max(...obj["right"]));58
// if both elements can be removed from same direction(ie. either left or right)59
return Math.max(...obj[set.values().next().value]);