mirror of
https://github.com/TheAlgorithms/C-Plus-Plus.git
synced 2026-05-09 23:53:18 +08:00
* chore: fix Markdown formatting in `dynamic_programming/kadane2.cpp` (#2276)
* docs: fix grammatical errors and typos (#2201)
* docs: fix grammatical errors and typos
* compilation error fixed
* Revert "compilation error fixed"
This reverts commit 0083cbfd1a.
* feat: added physics directory and ground to ground projectile motion algorithm (#2279)
* feat: added physics folder, ground to ground projectile motion calculations
* feat: added max height function
* fix: bug in angle calculations
* test: added test cases
* docs: added comments to test case variables
* docs: added comments to calculations
* fix: changed floats to doubles
* updating DIRECTORY.md
* Update physics/ground_to_ground_projectile_motion.cpp
Co-authored-by: David Leal <halfpacho@gmail.com>
* chore: add missing namespace
* rerun checks
Co-authored-by: David <Panquesito7@users.noreply.github.com>
Co-authored-by: David Leal <halfpacho@gmail.com>
* docs: updated a logically wrong doc comment (#2329)
* feat: add CMakeLists to the `divide_and_conquer` directory (#2072)
* fix: stairs pattern not printing slash (#2111)
when we propose 2 backslash then it doesn't take it as a comment and gets printed
Co-authored-by: David Leal <halfpacho@gmail.com>
* fix: use FreeGlut newest GitHub link (#2397)
* updating DIRECTORY.md
* fix: use FreeGlut newest GitHub link
* chore(fix): `data_strcutres` -> `data_structures` (#2399)
* feat: add Find non repeating number implementation (#2061)
* add find_single_number
* add fix issues
* remove .vscode
* add .vscode
* Update .vscode/settings.json
Co-authored-by: David Leal <halfpacho@gmail.com>
* chore(fix): minor issues
Co-authored-by: David Leal <halfpacho@gmail.com>
* [feat/docs]: improve the `quick_sort.cpp` algorithm (#2396)
* [feat/docs]: improve the `quick_sort.cpp`...
...algorithm implementation.
* clang-format and clang-tidy fixes for 40c858ba
* chore(fix): add original author
* updating DIRECTORY.md
* chore: update Discord links (#2407)
* docs: remove unneeded Markdown header
* feat: improve the Awesome Workflow (#2408)
* fix: Awesome Workflow issues
Thanks to @tjgurwara99 for the original fix: TheAlgorithms/C#1176
* chore: apply suggestions from code review
Co-authored-by: Taj <tjgurwara99@users.noreply.github.com>
* feat: various improvements
* chore: apply suggestions from code review
Co-authored-by: Taj <tjgurwara99@users.noreply.github.com>
* chore: remove LGTM and fix...
...CodeQL badges.
* docs: add guide on integrating CMake (#2410)
Taken from TheAlgorithms/C#1163
* updating DIRECTORY.md
Co-authored-by: Daemon <90456722+Daemon19@users.noreply.github.com>
Co-authored-by: aadarshkt <72285744+aadarshkt@users.noreply.github.com>
Co-authored-by: Focus <65309793+Focusucof@users.noreply.github.com>
Co-authored-by: David <Panquesito7@users.noreply.github.com>
Co-authored-by: David Leal <halfpacho@gmail.com>
Co-authored-by: Arjit Malik <arjitmalik2001@gmail.com>
Co-authored-by: Harsh Singh <94822101+harshsingh510@users.noreply.github.com>
Co-authored-by: Ravi Dev Pandey <62198564+literalEval@users.noreply.github.com>
Co-authored-by: Mehmet <110852769+walterwhite351@users.noreply.github.com>
Co-authored-by: Taj <tjgurwara99@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions@users.noreply.github.com>
89 lines
2.5 KiB
C++
89 lines
2.5 KiB
C++
/**
|
|
* @file
|
|
* @brief Implementation to find the non repeating integer
|
|
* in an array of repeating integers. [Single
|
|
* Number](https://leetcode.com/problems/single-number/)
|
|
*
|
|
* @details
|
|
* Given an array of integers in which all of the numbers occur exactly
|
|
* twice except one integer which occurs only once. Find the non-repeating
|
|
* integer.
|
|
*
|
|
* Worst Case Time Complexity: O(n)
|
|
* Space complexity: O(1)
|
|
|
|
* @author [Ravidev Pandey](https://github.com/literalEval)
|
|
*/
|
|
|
|
#include <cassert> /// for assert
|
|
#include <iostream> /// for IO operations
|
|
#include <vector> /// storing the numbers
|
|
|
|
/**
|
|
* @namespace bit_manipulation
|
|
* @brief Bit manipulation algorithms
|
|
*/
|
|
namespace bit_manipulation {
|
|
/**
|
|
* @namespace find_non_repeating_integer
|
|
* @brief Functions to find the non repeating integer
|
|
* in an array of repeating integers. [Single
|
|
* Number](https://leetcode.com/problems/single-number/)
|
|
*/
|
|
namespace find_non_repeating_integer {
|
|
/**
|
|
* @brief The main function implements find single number
|
|
* @param nums vector of integers
|
|
* @returns returns the integer that occurs only once
|
|
*/
|
|
int64_t find_non_repeating_integer(const std::vector<int>& nums) {
|
|
// The idea is based on the property of XOR.
|
|
// We know that 'a' XOR 'a' is '0' and '0' XOR 'b'
|
|
// is b.
|
|
// Using this, if we XOR all the elements of the array,
|
|
// the repeating elements will give '0' and this '0'
|
|
// with the single number will give the number itself.
|
|
|
|
int _xor = 0;
|
|
|
|
for (const int& num: nums) {
|
|
_xor ^= num;
|
|
}
|
|
|
|
return _xor;
|
|
}
|
|
} // namespace find_non_repeating_integer
|
|
} // namespace bit_manipulation
|
|
|
|
/**
|
|
* @brief Self-test implementations
|
|
* @returns void
|
|
*/
|
|
static void test() {
|
|
// n = 10,2 return 14
|
|
|
|
std::vector<int> nums_one{1, 1, 2, 2, 4, 5, 5};
|
|
std::vector<int> nums_two{203, 3434, 4545, 3434, 4545};
|
|
std::vector<int> nums_three{90, 1, 3, 90, 3};
|
|
|
|
assert(bit_manipulation::find_non_repeating_integer::
|
|
find_non_repeating_integer(nums_one) ==
|
|
4); // 4 is non repeating
|
|
assert(bit_manipulation::find_non_repeating_integer::
|
|
find_non_repeating_integer(nums_two) ==
|
|
203); // 203 is non repeating
|
|
assert(bit_manipulation::find_non_repeating_integer::
|
|
find_non_repeating_integer(nums_three) ==
|
|
1); // 1 is non repeating
|
|
|
|
std::cout << "All test cases successfully passed!" << std::endl;
|
|
}
|
|
/**
|
|
* @brief Main function
|
|
* @returns 0 on exit
|
|
*/
|
|
int main() {
|
|
test(); // run self-test implementations
|
|
return 0;
|
|
}
|