GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — JavaScript/Bit-Manipulation/GenerateSubSets.js at master · hackingstaar/JavaScript Expand file tree/ Copy pathGenerateSubSets.jsMore file actions 34 lines (32 loc) · 1001 Bytes / Copy pathGenerateSubSets.jsFile metadata and controls34 lines (32 loc) · 1001 Bytes 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 /** * @function generateSubSets * @param {Array} inputArray * @returns {Array} * @example [1,2] -> [[],[1],[2],[1,2]] */ // The time complexity of this algorithm is BigO(2^n) where n is the length of array function generateSubSets(inputArray) { if (!Array.isArray(inputArray)) { throw new Error('Provided input is not an array') } if (inputArray.length > 32) { throw new RangeError('Error size should be less than equal to 32') } let arrayLength = inputArray.length let subSets = [] // loop till (2^n) - 1 for (let i = 0; i < 1 << arrayLength; i++) { let subSet = [] for (let j = 0; j < arrayLength; j++) { // 1 << j it shifts binary digit 1 by j positions and then we perform // and by AND operation we are checking whetheer jth bit // in i is set to 1 if result is non zero just add into set if (i & (1 << j)) { subSet.push(inputArray[j]) } } subSets.push(subSet) } return subSets } export { generateSubSets } |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |