Skip to content

Instantly share code, notes, and snippets.

View webber2408's full-sized avatar
🎯
Focusing

Rahul Sharma webber2408

🎯
Focusing
View GitHub Profile
@webber2408
webber2408 / find_missing_and_repeating_2.cpp
Created October 8, 2022 19:06
Approach-2) Find Missing & Repeating No. (XOR - Bit Manipulation)
vector < int >Solution::repeatedNumber (const vector < int >&arr) {
/* Will hold xor of all elements and numbers from 1 to n */
int xor1;
/* Will have only single set bit of xor1 */
int set_bit_no;
int i;
int x = 0; // missing
int y = 0; // repeated
@webber2408
webber2408 / find_missing_and_repeating_1.cpp
Created October 7, 2022 20:41
Approach-1) Finding Missing & Repeating Number - Using extra array and index setting algorithm
#include <bits/stdc++.h>
#include <bits/stdc++.h>
pair<int,int> missingAndRepeating(vector<int> &arr, int n)
{
int mp[n+1] = {0};
for(int i=0; i<n; i++)
mp[arr[i]]++;
@webber2408
webber2408 / find_duplicates_app_6.cpp
Created October 7, 2022 20:32
Approach-6) Find Duplicates - Floyd's Hare & Tortoise Algorithm
class Solution {
public:
int findDuplicate(vector<int>& nums) {
int tort = nums[0], hare = nums[0];
do{
tort = nums[tort];
hare = nums[nums[hare]];
}while(tort != hare);
@webber2408
webber2408 / find_duplicates_app_5.cpp
Created October 7, 2022 19:56
Approach-5) Find Duplicates - Bit Manipulation
class Solution {
public:
// Find the position of the Most Significant Bit in num
int calcMaxBit(int num) {
int bits = 0;
while (num > 0) {
num /= 2;
bits++;
}
@webber2408
webber2408 / find_duplicates_app_4.cpp
Created October 7, 2022 19:41
Approach-4) Find Duplicates - Using Binary Search
class Solution {
public:
int findDuplicate(vector<int>& nums) {
// Lambda function to count how many numbers are less than or equal to 'cur'
auto small_or_equal = [&](int cur) {
int count = 0;
for (auto &num: nums) {
if (num <= cur)
@webber2408
webber2408 / find_duplicates_app_3.cpp
Created October 7, 2022 19:24
Approach-3) Find Duplicates - Negative Marking
class Solution {
public:
int findDuplicate(vector<int>& nums) {
for(int i=0; i<nums.size(); i++){
int absNum = abs(nums[i]);
if(nums[absNum] < 0){
// Number is duplicate
return absNum;
}
nums[absNum] = -nums[absNum];
@webber2408
webber2408 / find_duplicates_app_2.cpp
Created October 7, 2022 19:17
Approach-2) Find duplicates - store in a set
class Solution {
public:
int findDuplicate(vector<int>& nums) {
unordered_set<int> seen;
for (auto &num : nums) {
if (seen.count(num))
return num;
seen.insert(num);
}
return -1;
@webber2408
webber2408 / find_duplicates_app_1.cpp
Created October 7, 2022 19:15
Approach-1 Find Duplicates (Sort and find)
class Solution {
public:
int findDuplicate(vector<int>& nums) {
sort(nums.begin(), nums.end());
for (int i = 1; i < nums.size(); i++) {
if (nums[i] == nums[i - 1])
return nums[i];
}
return -1;
}
@webber2408
webber2408 / Subset_Sum.cpp
Created June 25, 2022 05:23
All Subset Sum Increasing Order
void recurse(int index, int N, vector<int> &num, vector<int> &sum, int sumSoFar){
if(index == N){
sum.push_back(sumSoFar);
return;
}
recurse(index+1, N, num, sum, sumSoFar+num[index]);
recurse(index+1, N, num, sum, sumSoFar);
return;
}
#include <bits/stdc++.h>
using namespace std;
class Solution {
void dfs(int node, vector<int> &vis, vector<int> adj[], vector<int> &storeDfs) {
storeDfs.push_back(node);
vis[node] = 1;
for(auto it : adj[node]) {
if(!vis[it]) {
dfs(it, vis, adj, storeDfs);
}