From 79ac2eb2782c422657dd9a6459d3a04e23d57616 Mon Sep 17 00:00:00 2001 From: aadil42 <77232799+aadil42@users.noreply.github.com> Date: Thu, 27 Mar 2025 13:49:07 +0530 Subject: [PATCH] Create 2780-minimum-index-of-a-valid-split.js Solved minimum-index-of-a-valid-split --- .../2780-minimum-index-of-a-valid-split.js | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 javascript/2780-minimum-index-of-a-valid-split.js diff --git a/javascript/2780-minimum-index-of-a-valid-split.js b/javascript/2780-minimum-index-of-a-valid-split.js new file mode 100644 index 000000000..054cfa29f --- /dev/null +++ b/javascript/2780-minimum-index-of-a-valid-split.js @@ -0,0 +1,47 @@ +/** + * Time O(n) | Space O(n) + * HashSet | Math + * https://leetcode.com/problems/minimum-index-of-a-valid-split + * @param {number[]} nums + * @return {number} + */ +var minimumIndex = function(nums) { + + const freq = {}; + + for (let i = 0; i < nums.length; i++) { + + const num = nums[i]; + freq[num] = (freq[num] && freq[num] + 1) || 1; + } + + let target = 0; + let maxOccurance = 0; + + for (const key in freq) { + + if (freq[key] > maxOccurance) { + maxOccurance = freq[key]; + target = +key; + } + } + + let leftSideOccurance = 0; + let rightSideOccurance = maxOccurance; + + for (let i = 0; i < nums.length - 1; i++) { + + const num = nums[i]; + + if (num === target) { + + leftSideOccurance += 1; + rightSideOccurance -= 1; + if (leftSideOccurance > (i+1)/2 && + rightSideOccurance > (nums.length - i - 1)/2 + ) return i; + } + } + + return -1; +};