3Sum With Multiplicity LeetCode solution in JavaScript
1/**2* @param {number[]} arr3* @param {number} target4* @return {number}5*/6var threeSumMulti = function (arr, target) {7let count = 0;8arr.sort((a, b) => a - b);9for (let i = 0; i < arr.length - 2; i++) {10let j = i + 1,11k = arr.length - 1;12while (j < k) {13let sum = arr[i] + arr[j] + arr[k];14if (sum < target) {15j++;16} else if (sum > target) {17k--;18} else {19if (arr[j] !== arr[k]) {20let j1 = j,21k1 = k;22while (arr[j] === arr[j1]) {23j1++;24}25while (arr[k] === arr[k1]) {26k1--;27}28count += (j1 - j) * (k - k1);29j = j1;30k = k1;31} else {32for (let n = 1; n <= k - j; n++) {33count += n;34}35break;36}37}38}39}40return count % (10 ** 9 + 7);41};