Skip to content

Commit 5c1a47a

Browse files
committed
Merge branch 'smv1999:master' into manny
2 parents 09eab42 + 6fd65f5 commit 5c1a47a

File tree

7 files changed

+596
-0
lines changed

7 files changed

+596
-0
lines changed

DSA 450 GFG/next_permutation.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# Link for the problem : https://leetcode.com/problems/next-permutation/
2+
3+
4+
class Solution(object):
5+
6+
def nextPermutation(self, nums):
7+
found = False
8+
i = len(nums)-2
9+
while i >=0:
10+
if nums[i] < nums[i+1]:
11+
found =True
12+
break
13+
i-=1
14+
if not found:
15+
nums.sort()
16+
else:
17+
m = self.findMaxIndex(i+1,nums,nums[i])
18+
nums[i],nums[m] = nums[m],nums[i]
19+
nums[i+1:] = nums[i+1:][::-1]
20+
return nums
21+
22+
def findMaxIndex(self,index,a,curr):
23+
ans = -1
24+
index = 0
25+
for i in range(index,len(a)):
26+
if a[i]>curr:
27+
if ans == -1:
28+
ans = curr
29+
index = i
30+
else:
31+
ans = min(ans,a[i])
32+
index = i
33+
return index
34+
ob1 = Solution()
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
/*
2+
3+
This is a Doubly Linked List program which deletes a node at the beginning to the Linked List.
4+
Since, it is a Doubly Linked List, both the forward and backward traversal is also possible.
5+
6+
*/
7+
8+
#include <iostream>
9+
10+
using namespace std;
11+
12+
/*
13+
14+
Node definition:
15+
1. Pointer to previous node.
16+
2. Integer Data
17+
3. Pointer to next node.
18+
19+
*/
20+
21+
class dll_node {
22+
public:
23+
dll_node* prev;
24+
int data;
25+
dll_node* next;
26+
};
27+
28+
void createDLL(dll_node* &head) {
29+
30+
int choice;
31+
32+
dll_node* temp = head;
33+
34+
do {
35+
36+
int data;
37+
38+
cout << "Enter Data : ";
39+
cin >> data;
40+
41+
dll_node* newNode = new dll_node();
42+
newNode->data = data;
43+
newNode->prev = NULL;
44+
newNode->next = NULL;
45+
46+
if(head == NULL) {
47+
head = newNode;
48+
temp = head;
49+
} else {
50+
temp->next = newNode;
51+
newNode->prev = temp;
52+
temp = newNode;
53+
}
54+
55+
cout << "Do you want to continue? (1/0) : ";
56+
cin >> choice;
57+
58+
} while(choice == 1);
59+
60+
61+
}
62+
63+
void delete_at_begin(dll_node* &head) {
64+
65+
if(head == NULL)
66+
return;
67+
68+
if(head->next == NULL) {
69+
dll_node* temp = head;
70+
head = head->next;
71+
delete temp;
72+
return;
73+
}
74+
75+
dll_node* temp = head;
76+
head = head->next;
77+
head->prev = NULL;
78+
delete temp;
79+
return;
80+
81+
}
82+
83+
void display(dll_node* head) {
84+
cout << "The elements are : ";
85+
while(head != NULL) {
86+
cout << head->data << " ";
87+
head = head->next;
88+
}
89+
cout << endl;
90+
}
91+
92+
int main() {
93+
94+
dll_node* head = NULL;
95+
96+
createDLL(head);
97+
98+
cout << "Before Deletion : " << endl;
99+
display(head);
100+
101+
delete_at_begin(head);
102+
103+
cout << "After Deletion : " << endl;
104+
display(head);
105+
106+
return 0;
107+
}
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
/*
2+
3+
This is a Doubly Linked List program which deletes a node at the end to the Linked List.
4+
Since, it is a Doubly Linked List, both the forward and backward traversal is also possible.
5+
6+
*/
7+
8+
#include <iostream>
9+
10+
using namespace std;
11+
12+
/*
13+
14+
Node definition:
15+
1. Pointer to previous node.
16+
2. Integer Data
17+
3. Pointer to next node.
18+
19+
*/
20+
21+
class dll_node {
22+
public:
23+
dll_node* prev;
24+
int data;
25+
dll_node* next;
26+
};
27+
28+
void createDLL(dll_node* &head) {
29+
30+
int choice;
31+
32+
dll_node* temp = head;
33+
34+
do {
35+
36+
int data;
37+
38+
cout << "Enter Data : ";
39+
cin >> data;
40+
41+
dll_node* newNode = new dll_node();
42+
newNode->data = data;
43+
newNode->prev = NULL;
44+
newNode->next = NULL;
45+
46+
if(head == NULL) {
47+
head = newNode;
48+
temp = head;
49+
} else {
50+
temp->next = newNode;
51+
newNode->prev = temp;
52+
temp = newNode;
53+
}
54+
55+
cout << "Do you want to continue? (1/0) : ";
56+
cin >> choice;
57+
58+
} while(choice == 1);
59+
60+
61+
}
62+
63+
void delete_at_end(dll_node* &head) {
64+
65+
if(head == NULL)
66+
return;
67+
68+
dll_node* temp = head;
69+
while(temp->next != NULL) {
70+
temp = temp->next;
71+
}
72+
73+
temp->prev->next = NULL;
74+
delete temp;
75+
return;
76+
77+
}
78+
79+
void display(dll_node* head) {
80+
cout << "The elements are : ";
81+
while(head != NULL) {
82+
cout << head->data << " ";
83+
head = head->next;
84+
}
85+
cout << endl;
86+
}
87+
88+
int main() {
89+
90+
dll_node* head = NULL;
91+
92+
createDLL(head);
93+
94+
cout << "Before Deletion : " << endl;
95+
display(head);
96+
97+
delete_at_end(head);
98+
99+
cout << "After Deletion : " << endl;
100+
display(head);
101+
102+
return 0;
103+
}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
/*
2+
3+
This is a Doubly Linked List program which gets a integer data from the user and
4+
creates a node which is inserted at the beginning to the Linked List.
5+
6+
Since, it is a Doubly Linked List, both the forward and backward traversal is also possible.
7+
8+
9+
*/
10+
11+
#include <iostream>
12+
13+
using namespace std;
14+
15+
/*
16+
17+
Node definition:
18+
1. Pointer to previous node.
19+
2. Integer Data
20+
3. Pointer to next node.
21+
22+
*/
23+
24+
class dll_node {
25+
public:
26+
dll_node* prev;
27+
int data;
28+
dll_node* next;
29+
};
30+
31+
void createDLL(dll_node* &head) {
32+
33+
int choice;
34+
35+
do {
36+
37+
int data;
38+
39+
cout << "Enter Data : ";
40+
cin >> data;
41+
42+
dll_node* newNode = new dll_node();
43+
newNode->data = data;
44+
newNode->prev = NULL;
45+
newNode->next = NULL;
46+
47+
if(head == NULL) {
48+
head = newNode;
49+
} else {
50+
newNode->next = head;
51+
head->prev = newNode;
52+
head = newNode;
53+
}
54+
55+
cout << "Do you want to continue? (1/0) : ";
56+
cin >> choice;
57+
58+
} while(choice == 1);
59+
60+
61+
}
62+
63+
void display(dll_node* head) {
64+
cout << "The elements are : ";
65+
while(head != NULL) {
66+
cout << head->data << " ";
67+
head = head->next;
68+
}
69+
cout << endl;
70+
}
71+
72+
int main() {
73+
74+
dll_node* head = NULL;
75+
76+
createDLL(head);
77+
display(head);
78+
79+
return 0;
80+
}

0 commit comments

Comments
 (0)