Skip to content

Commit

Permalink
st
Browse files Browse the repository at this point in the history
  • Loading branch information
Rohan2309 committed Nov 25, 2021
1 parent 88ae923 commit f434c1e
Show file tree
Hide file tree
Showing 27 changed files with 1,911 additions and 133 deletions.
20 changes: 20 additions & 0 deletions .vscode/c_cpp_properties.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "C:/MinGW/bin/g++.exe",
"cStandard": "gnu17",
"cppStandard": "c++17",
"intelliSenseMode": "windows-gcc-x64"
}
],
"version": 4
}
Binary file modified Array/a.exe
Binary file not shown.
76 changes: 76 additions & 0 deletions Array/chocolate.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
/*
*/

#include <bits/stdc++.h>
using namespace std;

#define ff first
#define ss second
// #define int long long
#define pb push_back
#define mp make_pair
#define pii pair<int, int>
#define vi vector<int>
#define mii map<int, int>
#define pqb priority_queue<int> //max heap
#define pqs priority_queue<int, vi, greater<int>> //min heap
#define setbits(x) __builtin_popcountll(x) //gives number of setbits
#define zrobits(x) __builtin_ctzll(x) //gives number of 0 bits
#define mod 1000000007 // 1e9+7 ans%mod
#define inf 1e18
#define ps(x, y) fixed << setprecision(y) << x
#define mk(arr, n, type) type *arr = new type[n]; //dynamic array
#define w(x) \
int x; \
cin >> x; \
while (x--) //test case
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); //random shuffle

//typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> pbds; //policy based ds

#define deb(x) cout << #x << " " << x << endl; //for debugging
#define fo(i, n) for (i = 0; i < n; i++)
#define fo1(i, n) for (i = 1; i <= n; i++)
#define Fo(i, k, n) for (i = k; i < n; i++)
#define vii vector<pii>
#define rep(i, a, b) for (int i = a; i < b; i++)

#define vi vector<int>
#define vvi vector<vi>

/*
struct Node
{
int data;
struct Node *left; //pointer pointing towards left child
struct Node *right; //pointer for right child
Node(int val) //constructor taking data
{
data = val;
left = NULL; //initially
right = NULL;
}
};
*/
long long findMinDiff(vector<long long> a, long long n, long long m)
{
//code
long long ans = LLONG_MAX; //for storing ans
sort(a.begin(), a.end()); //sorting vec for diff being minimum
for (int i = 0; i + m - 1 < n; i++)
{ //i+m-1<n as it will check a range
long long d = a[i + m - 1] - a[i]; //getting difference
if (d < ans)
{ //when d is minimum
ans = d;
}
}
return ans;
}
int main()
{

return 0;
}
125 changes: 125 additions & 0 deletions Array/mHeight2.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
/*
*/

#include <bits/stdc++.h>
using namespace std;

#define ff first
#define ss second
// #define int long long
#define pb push_back
#define mp make_pair
#define pii pair<int, int>
#define vi vector<int>
#define mii map<int, int>
#define pqb priority_queue<int> //max heap
#define pqs priority_queue<int, vi, greater<int>> //min heap
#define setbits(x) __builtin_popcountll(x) //gives number of setbits
#define zrobits(x) __builtin_ctzll(x) //gives number of 0 bits
#define mod 1000000007 // 1e9+7 ans%mod
#define inf 1e18
#define ps(x, y) fixed << setprecision(y) << x
#define mk(arr, n, type) type *arr = new type[n]; //dynamic array
#define w(x) \
int x; \
cin >> x; \
while (x--) //test case
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); //random shuffle

//typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> pbds; //policy based ds

#define deb(x) cout << #x << " " << x << endl; //for debugging
#define fo(i, n) for (i = 0; i < n; i++)
#define fo1(i, n) for (i = 1; i <= n; i++)
#define Fo(i, k, n) for (i = k; i < n; i++)
#define vii vector<pii>
#define rep(i, a, b) for (int i = a; i < b; i++)

#define vi vector<int>
#define vvi vector<vi>

/*
struct Node
{
int data;
struct Node *left; //pointer pointing towards left child
struct Node *right; //pointer for right child
Node(int val) //constructor taking data
{
data = val;
left = NULL; //initially
right = NULL;
}
};
*/

class Solution
{
public:
int getMinDiff(int arr[], int n, int k)
{
// code here
vector<pair<int, int>> v; //first will contain value and second will contain index
vector<int> vis(n);
//pushing -k val if not neg and pushing +k val in vector
for (int i = 0; i < n; i++)
{
if (arr[i] - k >= 0)
{
v.push_back({arr[i] - k, i});
}
v.push_back({arr[i] + k, i});
}
sort(v.begin(), v.end());
int ele = 0; //n elements in window
int left = 0;
int right = 0; //right size of window index

while (ele < n and right < v.size())
{
if (vis[v[right].second] == 0)
{ //if not already visited
ele++; //now we have 1 element out of 4
}
vis[v[right].second]++; //visited
right++; //check nesxt element
}
//got our window
int ans = v[right - 1].first - v[left].first;
while (right < v.size())
{
if (vis[v[left].second] == 1)
{ //if 1 then no var left
ele--; //decre ele
}
vis[v[left].second]--;
left++; //incre pointer

while (ele < n and right < v.size())
{
if (vis[v[right].second] == 0)
{ //if not already visited
ele++; //now we have 1 element out of 4
}
vis[v[right].second]++; //visited
right++; //check nesxt element
}
if (ele == n)
{
ans = min(ans, v[right - 1].first - v[left].first);
}
else
{
break;
}
}
return ans;
}
};
int main()
{

return 0;
}
149 changes: 149 additions & 0 deletions Array/majorityEle.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
/*
229. Majority Element II
Medium
3338
239
Add to List
Share
Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times.
Follow-up: Could you solve the problem in linear time and in O(1) space?
Example 1:
Input: nums = [3,2,3]
Output: [3]
Example 2:
Input: nums = [1]
Output: [1]
Example 3:
Input: nums = [1,2]
Output: [1,2]
*/

#include <bits/stdc++.h>
using namespace std;

#define ff first
#define ss second
// #define int long long
#define pb push_back
#define mp make_pair
#define pii pair<int, int>
#define vi vector<int>
#define mii map<int, int>
#define pqb priority_queue<int> //max heap
#define pqs priority_queue<int, vi, greater<int>> //min heap
#define setbits(x) __builtin_popcountll(x) //gives number of setbits
#define zrobits(x) __builtin_ctzll(x) //gives number of 0 bits
#define mod 1000000007 // 1e9+7 ans%mod
#define inf 1e18
#define ps(x, y) fixed << setprecision(y) << x
#define mk(arr, n, type) type *arr = new type[n]; //dynamic array
#define w(x) \
int x; \
cin >> x; \
while (x--) //test case
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); //random shuffle

//typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> pbds; //policy based ds

#define deb(x) cout << #x << " " << x << endl; //for debugging
#define fo(i, n) for (i = 0; i < n; i++)
#define fo1(i, n) for (i = 1; i <= n; i++)
#define Fo(i, k, n) for (i = k; i < n; i++)
#define vii vector<pii>
#define rep(i, a, b) for (int i = a; i < b; i++)

#define vi vector<int>
#define vvi vector<vi>

/*
struct Node
{
int data;
struct Node *left; //pointer pointing towards left child
struct Node *right; //pointer for right child
Node(int val) //constructor taking data
{
data = val;
left = NULL; //initially
right = NULL;
}
};
*/
vector<int> majorityElement(vector<int> &nums)
{
//boyer moore voting algo
vector<int> ans;
int n = nums.size();
int k = floor(n / 3); //when 8/3 we want ans 2
int ele1 = -1; //initial values
int ele2 = -1;
int c1 = 0;
int c2 = 0;
for (int i = 0; i < n; i++)
{
if (ele1 == nums[i])
{
c1++;
}
else if (ele2 = nums[i])
{
c2++;
}
else if (c1 == 0)
{ //when first element
ele1 = nums[i];
c1 = 1; //count becomes 1
}
else if (c2 == 0)
{
ele2 = nums[i];
c2 = 1;
}
else
{
c1--;
c2--;
}
}
//we got atleast 2 nums now we can check if they are greater than k or not
c1 = 0;
c2 = 0;
for (int i = 0; i < n; i++)
{
if (nums[i] == ele1)
{
c1++;
}
else if (nums[i] == ele2)
{
c2++;
}
}

if (c1 > k)
{
ans.push_back(ele1);
}
if (c2 > k)
{
ans.push_back(ele2);
}
return ans;
}
int main()
{

return 0;
}
Loading

0 comments on commit f434c1e

Please sign in to comment.