diff --git a/algorithms/JavaScript/README.md b/algorithms/JavaScript/README.md index 9835c2cb..bb91152d 100644 --- a/algorithms/JavaScript/README.md +++ b/algorithms/JavaScript/README.md @@ -3,6 +3,7 @@ ## Arrays - [Counting Inversions](src/arrays/counting-inversions.js) +- [Single Occurring Element](src/arrays/single-occurring-element.js) ## Linked Lists diff --git a/algorithms/JavaScript/src/arrays/single-occurring-element.js b/algorithms/JavaScript/src/arrays/single-occurring-element.js new file mode 100644 index 00000000..ece2949b --- /dev/null +++ b/algorithms/JavaScript/src/arrays/single-occurring-element.js @@ -0,0 +1,14 @@ +// Problem: Given an array of integers, every element appears twice except for one. Find that single one. +// Space Complexity: O(1) +// Time Complexity: O(n) + +function singleOccurringElement(arr) { + let result = 0; + for(let el of arr) { + result ^= el; + } + return result; +} + +const arr = [2, 5, 7, 3, 1, 8, 8, 9, 4, 2, 7, 1, 4, 9, 5]; +console.log(singleOccurringElement(arr)); \ No newline at end of file diff --git a/algorithms/JavaScript/src/index.js b/algorithms/JavaScript/src/index.js index b15a3328..98984752 100644 --- a/algorithms/JavaScript/src/index.js +++ b/algorithms/JavaScript/src/index.js @@ -1,5 +1,6 @@ // Arrays require('./arrays/counting-inversions'); +require('./arrays/single-occurring-element'); // Linked Lists require('./linked-lists/singly');