From 6178329b960fd583df297c4cfab5eab6fc93e245 Mon Sep 17 00:00:00 2001 From: Aadil <77232799+aadil42@users.noreply.github.com> Date: Mon, 26 Jun 2023 19:44:47 +0530 Subject: [PATCH 1/2] Create 0410-split-array-largest-sum.js Solved split-array-largest-sum in JS. --- javascript/0410-split-array-largest-sum.js | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 javascript/0410-split-array-largest-sum.js diff --git a/javascript/0410-split-array-largest-sum.js b/javascript/0410-split-array-largest-sum.js new file mode 100644 index 000000000..61a5e7c1c --- /dev/null +++ b/javascript/0410-split-array-largest-sum.js @@ -0,0 +1,41 @@ +/** + * https://leetcode.com/problems/split-array-largest-sum/ + * + * Binary Search + * Time O(log(s)*n) (s = difference between the least and max possible value) | Space O(1) + * @param {number[]} nums + * @param {number} k + * @return {number} + */ +var splitArray = function(nums, k) { + + let left = Math.max(...nums); + let right = nums.reduce((acc, num) => acc + num, 0); + let result = right; + while(left <= right) { + const mid = Math.floor((left+right)/2); + if(canSplit(mid)) { + result = mid; + right = mid - 1; + } else { + left = mid + 1; + } + } + + function canSplit(largest) { + let splitCount = 0; + let currSum = 0; + + for(let i = 0; i < nums.length; i++) { + currSum += nums[i]; + if(currSum > largest) { + currSum = nums[i]; + splitCount++; + } + } + + return splitCount + 1 <= k; + } + + return result; +}; From d011e914f0186f3bdd816416e1a8eb510382223f Mon Sep 17 00:00:00 2001 From: Aadil <77232799+aadil42@users.noreply.github.com> Date: Tue, 11 Jul 2023 20:07:39 +0530 Subject: [PATCH 2/2] Update 0410-split-array-largest-sum.js Using the Bitwise operator to get middle value. --- javascript/0410-split-array-largest-sum.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javascript/0410-split-array-largest-sum.js b/javascript/0410-split-array-largest-sum.js index 61a5e7c1c..32a30f03a 100644 --- a/javascript/0410-split-array-largest-sum.js +++ b/javascript/0410-split-array-largest-sum.js @@ -13,7 +13,7 @@ var splitArray = function(nums, k) { let right = nums.reduce((acc, num) => acc + num, 0); let result = right; while(left <= right) { - const mid = Math.floor((left+right)/2); + const mid = (left + right) >> 1; if(canSplit(mid)) { result = mid; right = mid - 1;
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: