Skip to content

Commit e14181c

Browse files
Add files via upload
1 parent e3e4008 commit e14181c

100 files changed

Lines changed: 9463 additions & 0 deletions

File tree

Some content is hidden

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

Add_1_to_a_SLL.cpp

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
//{ Driver Code Starts
2+
// Initial template for C++
3+
4+
#include <bits/stdc++.h>
5+
using namespace std;
6+
7+
struct Node {
8+
int data;
9+
struct Node* next;
10+
11+
Node(int x) {
12+
data = x;
13+
next = NULL;
14+
}
15+
};
16+
17+
void printList(Node* node) {
18+
while (node != NULL) {
19+
cout << node->data % 10;
20+
node = node->next;
21+
}
22+
cout << "\n";
23+
}
24+
25+
26+
// } Driver Code Ends
27+
// User function template for C++
28+
29+
/*
30+
31+
struct Node
32+
{
33+
int data;
34+
struct Node* next;
35+
36+
Node(int x){
37+
data = x;
38+
next = NULL;
39+
}
40+
};
41+
42+
*/
43+
44+
class Solution {
45+
public:
46+
Node* reverse(Node* head) {
47+
Node* temp = head;
48+
Node* front = NULL;
49+
Node* prev = NULL;
50+
51+
while (temp != NULL)
52+
{
53+
front = temp->next;
54+
temp->next = prev;
55+
prev = temp;
56+
temp = front;
57+
}
58+
return prev;
59+
}
60+
61+
Node* addOne(Node* head) {
62+
head = reverse(head);
63+
Node * temp = head;
64+
int carry = 1;
65+
66+
while (temp != NULL)
67+
{
68+
temp->data += carry;
69+
if (temp->data < 10)
70+
{
71+
carry = 0;
72+
break;
73+
}
74+
else
75+
{
76+
temp->data = 0;
77+
carry = 1;
78+
}
79+
temp = temp->next;
80+
}
81+
82+
if (carry == 1)
83+
{
84+
Node* newnode = new Node(1);
85+
head = reverse(head);
86+
newnode->next = head;
87+
return newnode;
88+
}
89+
90+
head = reverse(head);
91+
return head;
92+
}
93+
};
94+
95+
96+
//{ Driver Code Starts.
97+
98+
int main() {
99+
int t;
100+
cin >> t;
101+
cin.ignore();
102+
while (t--) {
103+
vector<int> arr;
104+
string input;
105+
getline(cin, input);
106+
stringstream ss(input);
107+
int number;
108+
while (ss >> number) {
109+
arr.push_back(number);
110+
}
111+
112+
if (arr.empty()) {
113+
cout << -1 << endl;
114+
continue;
115+
}
116+
117+
int data = arr[0];
118+
struct Node* head = new Node(data);
119+
struct Node* tail = head;
120+
for (int i = 1; i < arr.size(); ++i) {
121+
data = arr[i];
122+
tail->next = new Node(data);
123+
tail = tail->next;
124+
}
125+
Solution ob;
126+
head = ob.addOne(head);
127+
printList(head);
128+
}
129+
return 0;
130+
}
131+
132+
// } Driver Code Ends

AggressiveCows.cpp

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
//{ Driver Code Starts
2+
// Initial Template for C++
3+
#include <bits/stdc++.h>
4+
using namespace std;
5+
6+
7+
// } Driver Code Ends
8+
// User function Template for C++
9+
10+
class Solution {
11+
public:
12+
bool canWePlace(vector<int> &stalls, int distance, int cows)
13+
{
14+
int cntCows = 1;
15+
int last = stalls[0];
16+
for(int i = 0; i < stalls.size(); i++)
17+
{
18+
if(stalls[i] - last >= distance)
19+
{
20+
cntCows++;
21+
last = stalls[i];
22+
}
23+
if(cntCows >= cows)
24+
return true;
25+
}
26+
return false;
27+
}
28+
int solve(int n, int k, vector<int> &stalls) {
29+
sort(stalls.begin(), stalls.end());
30+
int ans = -1;
31+
int low = 1;
32+
int high = stalls[stalls.size() - 1];
33+
while(low <= high)
34+
{
35+
int mid = (low + high)/2;
36+
if(canWePlace(stalls, mid, k))
37+
{
38+
ans = mid;
39+
low = mid+1;
40+
}
41+
else high = mid-1;
42+
}
43+
return ans;
44+
}
45+
};
46+
47+
//{ Driver Code Starts.
48+
49+
int main() {
50+
int t = 1;
51+
cin >> t;
52+
53+
// freopen ("output_gfg.txt", "w", stdout);
54+
55+
while (t--) {
56+
// Input
57+
58+
int n, k;
59+
cin >> n >> k;
60+
61+
vector<int> stalls(n);
62+
for (int i = 0; i < n; i++) {
63+
cin >> stalls[i];
64+
}
65+
// char ch;
66+
// cin >> ch;
67+
68+
Solution obj;
69+
cout << obj.solve(n, k, stalls) << endl;
70+
71+
// cout << "~\n";
72+
}
73+
// fclose(stdout);
74+
75+
return 0;
76+
}
77+
// } Driver Code Ends

Alien_Dictionary.cpp

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
//{ Driver Code Starts
2+
// Initial Template for C++
3+
4+
#include <bits/stdc++.h>
5+
using namespace std;
6+
7+
// } Driver Code Ends
8+
// User function Template for C++
9+
10+
class Solution{
11+
private:
12+
vector<int> topoSort(int V, vector<int> adj[])
13+
{
14+
int indegree[V] = {0};
15+
for(int i = 0; i < V; i++)
16+
{
17+
for(auto it : adj[i])
18+
{
19+
indegree[it]++;
20+
}
21+
}
22+
queue<int>q;
23+
for(int i = 0; i < V; i++)
24+
{
25+
if(indegree[i] == 0)
26+
{
27+
q.push(i);
28+
}
29+
}
30+
vector<int> topo;
31+
while(!q.empty())
32+
{
33+
int node = q.front();
34+
q.pop();
35+
topo.push_back(node);
36+
for(auto it : adj[node])
37+
{
38+
indegree[it]--;
39+
if(indegree[it] == 0) q.push(it);
40+
}
41+
}
42+
return topo;
43+
}
44+
public:
45+
string findOrder(string dict[], int N, int K) {
46+
vector<int>adj[K];
47+
for(int i = 0; i < N-1; i++)
48+
{
49+
string s1 = dict[i];
50+
string s2 = dict[i+1];
51+
int len = min(s1.size(), s2.size());
52+
for(int ptr = 0; ptr < len; ptr++)
53+
{
54+
if(s1[ptr] != s2[ptr])
55+
{
56+
adj[s1[ptr] - 'a'].push_back(s2[ptr] - 'a');
57+
break;
58+
}
59+
}
60+
}
61+
vector<int>topo = topoSort(K, adj);
62+
string ans = "";
63+
for(auto it : topo)
64+
{
65+
ans = ans + char(it + 'a');
66+
}
67+
return ans;
68+
}
69+
};
70+
71+
//{ Driver Code Starts.
72+
string order;
73+
bool f(string a, string b) {
74+
int p1 = 0;
75+
int p2 = 0;
76+
for (int i = 0; i < min(a.size(), b.size()) and p1 == p2; i++) {
77+
p1 = order.find(a[i]);
78+
p2 = order.find(b[i]);
79+
// cout<<p1<<" "<<p2<<endl;
80+
}
81+
82+
if (p1 == p2 and a.size() != b.size()) return a.size() < b.size();
83+
84+
return p1 < p2;
85+
}
86+
87+
// Driver program to test above functions
88+
int main() {
89+
int t;
90+
cin >> t;
91+
while (t--) {
92+
int N, K;
93+
cin >> N >> K;
94+
string dict[N];
95+
for (int i = 0; i < N; i++) cin >> dict[i];
96+
97+
Solution obj;
98+
string ans = obj.findOrder(dict, N, K);
99+
order = "";
100+
for (int i = 0; i < ans.size(); i++) order += ans[i];
101+
102+
string temp[N];
103+
std::copy(dict, dict + N, temp);
104+
sort(temp, temp + N, f);
105+
106+
bool f = true;
107+
for (int i = 0; i < N; i++)
108+
if (dict[i] != temp[i]) f = false;
109+
110+
if(f)cout << 1;
111+
else cout << 0;
112+
cout << endl;
113+
}
114+
return 0;
115+
}
116+
117+
// } Driver Code Ends

0 commit comments

Comments
 (0)