Skip to content

Commit c9aae04

Browse files
authored
Merge pull request #584 from syndax9/main
Array DSA codes
2 parents b6a39ae + 8b9d7a5 commit c9aae04

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+1393
-0
lines changed

Array/AlternatePnN.cpp

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
using namespace std;
2+
#include <iostream>
3+
#include <vector>
4+
5+
void rearrange(int arr[], int n){
6+
vector <int> pos;
7+
vector <int> neg;
8+
for(int i=0;i<n;i++){
9+
if(arr[i]>=0){
10+
pos.push_back(arr[i]);
11+
}
12+
else{
13+
neg.push_back(arr[i]);
14+
}
15+
}
16+
int posindex=0;
17+
int negindex=0;
18+
for(int i=0;i<n;i++){
19+
if(posindex<pos.size() && posindex==negindex){
20+
arr[i]=pos[posindex];
21+
posindex++;
22+
}
23+
else if(negindex<neg.size() && posindex>negindex){
24+
arr[i]=neg[negindex];
25+
negindex++;
26+
}
27+
else if(negindex==neg.size() && posindex<pos.size()){
28+
arr[i]=pos[posindex];
29+
posindex++;
30+
}
31+
else if(posindex==pos.size() && negindex<neg.size()){
32+
arr[i]=neg[negindex];
33+
negindex++;
34+
}
35+
}
36+
}
37+
38+
int main(){
39+
int arr[9] = {9, 4, -2, -1, 5, 0, -5, -3, 2};
40+
rearrange(arr,9);
41+
for (int i = 0; i < 9; i++)
42+
{
43+
cout<<arr[i]<<" ";
44+
}
45+
46+
}

Array/DeleteofDuplicate.cpp

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
using namespace std;
2+
#include <iostream>
3+
4+
int dup(int arr[], int n){
5+
int a = 1;
6+
for (int i = 1; i < n; i++)
7+
{
8+
if (arr[i] != arr[a-1])
9+
{
10+
arr[a] = arr[i];
11+
a++;
12+
}
13+
}
14+
return a;
15+
}
16+
17+
int main(){
18+
int arr[] = {10,20,20,30,30,30,30}, n = 7;
19+
cout<<dup(arr, n);
20+
}

Array/Duplicate.cpp

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
using namespace std;
2+
#include <iostream>
3+
4+
int duplicate(int arr[], int n){
5+
for(int i = 0; i < n; i++){
6+
arr[arr[i]%n] += n;
7+
}
8+
for(int i = 0; i < n; i++){
9+
if(arr[i]/n > 1) cout<<i<<" ";
10+
}
11+
return -1;
12+
}
13+
14+
int main(){
15+
int arr[] = {1,2,3,3,2,3}, n = 6;
16+
duplicate(arr,n);
17+
}

Array/MaxArray.cpp

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using namespace std;
2+
#include <iostream>
3+
4+
int max(int arr[], int n){
5+
int res=0;
6+
for (int i = 0; i < n; i++)
7+
{
8+
if ( arr[i] > arr[res])
9+
{
10+
res = i;
11+
}
12+
}
13+
return res;
14+
}
15+
16+
int main(){
17+
int arr[] = {2,5,8,4}, n = 4;
18+
cout<<max(arr,n);
19+
}

Array/ReverseArray.cpp

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
using namespace std;
2+
#include <iostream>
3+
4+
void reverse(int arr[], int n){
5+
int first = 0, last = n-1;
6+
while(first < last){
7+
int a = arr[first];
8+
arr[first] = arr[last];
9+
arr[last]= a;
10+
first++;
11+
last--;
12+
}
13+
for (int i = 0; i < n; i++)
14+
{
15+
cout<<arr[i]<<" ";
16+
}
17+
18+
}
19+
20+
int main(){
21+
int arr[] = {10, 5, 7, 30}, n = 4;
22+
reverse(arr, n);
23+
}

Array/check.cpp

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using namespace std;
2+
#include <iostream>
3+
#include <unordered_set>
4+
5+
void intersection(int a[], int b[], int n, int m){
6+
unordered_set<int> s;
7+
for(int i = 0; i < n; i++){
8+
s.insert(a[i]);
9+
}
10+
for(int i = 0; i < m; i++){
11+
if(s.find(b[i])!=s.end()) cout<<b[i]<<" ";
12+
}
13+
}
14+
15+
int main(){
16+
int a[] = {1,6,3,8,2}, b[] = {2,6,8,5,9,3};
17+
intersection(a,b,5,6);
18+
}

Array/check.exe

3.19 MB
Binary file not shown.

Array/findingDuplicate.cpp

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using namespace std;
2+
#include <iostream>
3+
#include <vector>
4+
5+
vector<int> duplicate(int arr[], int n){
6+
for (int i = 0; i < n; i++)
7+
{
8+
arr[arr[i]%n] += n;
9+
}
10+
for (int i = 0; i < n; i++)
11+
{
12+
13+
}
14+
15+
}
16+
17+
int main(){
18+
19+
}

Array/frequency.cpp

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
using namespace std;
2+
#include <iostream>
3+
4+
void count(int arr[], int n){
5+
int f = 1;
6+
int i = 1;
7+
while(i < n){
8+
while(i < n && arr[i] == arr[i-1]){
9+
f++;
10+
i++;
11+
}
12+
cout<<arr[i-1]<<" "<<f<<endl;
13+
i++;
14+
f = 1;
15+
if (n ==1 || arr[n-1] != arr[n-2]){
16+
cout<<arr[n-1]<<" "<<f;
17+
}
18+
}
19+
}
20+
21+
int main(){
22+
int arr[] = {10, 10, 10, 25, 30, 30}, n = 6;
23+
count(arr, n);
24+
}

Array/hashing/FirstRepeating.cpp

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
using namespace std;
2+
#include <iostream>
3+
4+
#include <unordered_set>
5+
int firstRepeated(int arr[], int n)
6+
{
7+
unordered_set<int> s, p;
8+
for (int i = 0; i < n; i++)
9+
{
10+
if (p.find(arr[i]) != p.end())
11+
{
12+
s.insert(arr[i]);
13+
}
14+
else
15+
{
16+
p.insert(arr[i]);
17+
}
18+
}
19+
for (int i = 0; i < n; i++)
20+
{
21+
if (s.find(arr[i]) != s.end())
22+
{
23+
return i + 1;
24+
}
25+
}
26+
return -1;
27+
}
28+
29+
30+
int main()
31+
{
32+
int arr[7] = {1,5,3,4,3,5,6}, n = 7;
33+
cout<<firstRepeated(arr,n);
34+
}

Array/hashing/LongSubArray.cpp

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using namespace std;
2+
#include <iostream>
3+
#include <unordered_map>
4+
5+
int longSubArrsum(int arr[], int n, int x){
6+
unordered_map<int,int> m;
7+
int pre_sum = 0, res = 0;
8+
for (int i = 0; i < n; i++){
9+
pre_sum += arr[i];
10+
if(pre_sum == x){
11+
res = i+1;
12+
}
13+
if(m.find(pre_sum) == m.end()){
14+
m.insert({pre_sum,i});
15+
}
16+
if (m.find(pre_sum - x) != m.end()){
17+
res = max(res, i - m[pre_sum-x]);
18+
}
19+
}
20+
return res;
21+
}
22+
23+
int main(){
24+
int arr[] = {4,3,8,1,2,5};
25+
cout<<longSubArrsum(arr,6,8);
26+
}

Array/hashing/LongSubArray.exe

3.21 MB
Binary file not shown.

Array/hashing/SubbarraySum0.cpp

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#include <iostream>
2+
#include <unordered_set>
3+
using namespace std;
4+
5+
bool ZeroSumSubarray(int arr[], int n)
6+
{
7+
unordered_set<int> s;
8+
int curr_sum = 0;
9+
s.insert(0);
10+
for(int i = 0; i < n; i++)
11+
{
12+
curr_sum += arr[i];
13+
if(s.find(curr_sum) != s.end()){
14+
return true;
15+
}
16+
s.insert(curr_sum);
17+
}
18+
return false;
19+
}
20+
21+
int main()
22+
{
23+
int arr[] = {3,4,-3,-1,1};
24+
int n = 5;
25+
26+
cout << ZeroSumSubarray(arr, n);
27+
}

Array/hashing/SubbarraySum0.exe

3.2 MB
Binary file not shown.

Array/hashing/intersection.cpp

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using namespace std;
2+
#include <iostream>
3+
#include <unordered_set>
4+
5+
int intersection(int a[], int m, int b[], int n){
6+
int z = 0;
7+
unordered_set<int> set(a, a+m);
8+
for (int i = 0; i < n; i++)
9+
{
10+
if(set.find(b[i]) != set.end()){
11+
z++;
12+
set.erase(b[i]);
13+
}
14+
}
15+
return z;
16+
}
17+
18+
int main(){
19+
int a[] = {5,10,15,5,10}, b[] = {15,5,5,10,4};
20+
cout<<intersection(a,5,b,5);
21+
}

Array/hashing/longSum0.cpp

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
using namespace std;
2+
#include <iostream>
3+
#include <unordered_map>
4+
5+
int longSubArrsum(int arr[], int n, int x){
6+
unordered_map<int,int> m;
7+
int curr = 0, res = 0;
8+
for (int i = 0; i < n; i++)
9+
{
10+
curr += arr[i];
11+
if (curr == x)
12+
{
13+
res = i+1;
14+
}
15+
if (m.find(curr) == m.end())
16+
{
17+
m.insert({curr,i});
18+
}
19+
if (m.find(curr-x) != m.end())
20+
{
21+
res = max(res, i-m[curr-x]);
22+
}
23+
}
24+
return res;
25+
}
26+
27+
int subArray0(int arr[], int n){
28+
unordered_map<int,int> m;
29+
int res = 0;
30+
for (int i = 0; i < n; i++)
31+
{
32+
if(arr[i] == 0){
33+
arr[i] = -1;
34+
}
35+
}
36+
return longSubArrsum(arr,n,0);
37+
}
38+
39+
int main(){
40+
int arr[] = {1,1,0,1,1,0,0}; int n = 7;
41+
cout<<subArray0(arr,n);
42+
}

Array/hashing/longSum0.exe

3.21 MB
Binary file not shown.

0 commit comments

Comments
 (0)