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;
+};