Skip to content

Commit d838d01

Browse files
authored
Renamed files and added 5 problems (#370)
1 parent 6b2090e commit d838d01

35 files changed

+224
-241
lines changed

.DS_Store

8 KB
Binary file not shown.

CPP/.DS_Store

10 KB
Binary file not shown.

CPP/Problems/.DS_Store

14 KB
Binary file not shown.

CPP/Problems/BitonicArray.cpp

+78-78
Original file line numberDiff line numberDiff line change
@@ -1,95 +1,95 @@
1-
// Bitonic array is an array having strictly increasing order upto an element and then having strictly
2-
// decreasing order. It is also called Mountain array.
1+
// Bitonic array is an array having strictly increasing order upto an element and then having strictly
2+
// decreasing order. It is also called Mountain array.
33

4-
// Program to find element in a bitonic array
5-
// T.C.: O(log n)
6-
// S.C.: O(1)
7-
#include <iostream>
8-
#include <vector>
9-
using namespace std;
4+
// Program to find element in a bitonic array
5+
// T.C.: O(log n)
6+
// S.C.: O(1)
7+
#include <iostream>
8+
#include <vector>
9+
using namespace std;
1010

11-
int findPeakIndex (vector<int> vect, int size) { // find index of peak element
12-
int lo = 0, hi = size-1;
13-
int mid = lo + (hi - lo)/2;
11+
int findPeakIndex (vector<int> vect, int size) { // find index of peak element
12+
int lo = 0, hi = size-1;
13+
int mid = lo + (hi - lo)/2;
1414

15-
while (lo < hi) {
16-
if (mid == size-1 || vect[mid] > vect[mid+1]) {
17-
hi = mid;
18-
}
19-
else if (mid == 0 || vect[mid] > vect[mid-1]) {
20-
lo = mid+1;
21-
}
22-
mid = lo + (hi - lo)/2;
15+
while (lo < hi) {
16+
if (mid == size-1 || vect[mid] > vect[mid+1]) {
17+
hi = mid;
2318
}
24-
return lo;
19+
else if (mid == 0 || vect[mid] > vect[mid-1]) {
20+
lo = mid+1;
21+
}
22+
mid = lo + (hi - lo)/2;
2523
}
24+
return lo;
25+
}
2626

27-
int leftPart (vector<int> vect, int target, int hi) { // search element in left part
28-
int lo = 0;
29-
int mid = lo + (hi - lo)/2;
30-
while (lo <= hi) {
31-
if (vect[mid] == target) {
32-
return mid;
33-
}
34-
else if (vect[mid] > target) {
35-
hi = mid - 1;
36-
}
37-
else {
38-
lo = mid + 1;
39-
}
40-
mid = lo + (hi - lo)/2;
27+
int leftPart (vector<int> vect, int target, int hi) { // search element in left part
28+
int lo = 0;
29+
int mid = lo + (hi - lo)/2;
30+
while (lo <= hi) {
31+
if (vect[mid] == target) {
32+
return mid;
33+
}
34+
else if (vect[mid] > target) {
35+
hi = mid - 1;
4136
}
42-
return -1;
37+
else {
38+
lo = mid + 1;
39+
}
40+
mid = lo + (hi - lo)/2;
4341
}
42+
return -1;
43+
}
4444

45-
int rightPart (vector<int> vect, int target, int lo) { // search element in right part
46-
int hi = vect.size()-1;
47-
int mid = lo + (hi - lo)/2;
48-
while (lo <= hi) {
49-
if (vect[mid] == target) {
50-
return mid;
51-
}
52-
else if (vect[mid] < target) {
53-
hi = mid - 1;
54-
}
55-
else {
56-
lo = mid + 1;
57-
}
58-
mid = lo + (hi - lo)/2;
45+
int rightPart (vector<int> vect, int target, int lo) { // search element in right part
46+
int hi = vect.size()-1;
47+
int mid = lo + (hi - lo)/2;
48+
while (lo <= hi) {
49+
if (vect[mid] == target) {
50+
return mid;
51+
}
52+
else if (vect[mid] < target) {
53+
hi = mid - 1;
5954
}
60-
return -1;
55+
else {
56+
lo = mid + 1;
57+
}
58+
mid = lo + (hi - lo)/2;
6159
}
60+
return -1;
61+
}
6262

63-
int findElement(vector<int> vect, int size, int target) {
64-
// DRIVER CODE
65-
// find peak of array
66-
int peak = findPeakIndex (vect, size);
67-
// compare peak element with target
68-
if (target > vect[peak]) {return -1;}
69-
else if (target == vect[peak]) {return peak;}
70-
// find element in increasing/decreasing sequence
63+
int findElement(vector<int> vect, int size, int target) {
64+
// DRIVER CODE
65+
// find peak of array
66+
int peak = findPeakIndex (vect, size);
67+
// compare peak element with target
68+
if (target > vect[peak]) {return -1;}
69+
else if (target == vect[peak]) {return peak;}
70+
// find element in increasing/decreasing sequence
71+
else {
72+
int leftIndex = leftPart(vect, target, peak);
73+
if (leftIndex != -1) {
74+
return leftIndex;
75+
}
7176
else {
72-
int leftIndex = leftPart(vect, target, peak);
73-
if (leftIndex != -1) {
74-
return leftIndex;
75-
}
76-
else {
77-
return rightPart(vect, target, peak);
78-
}
77+
return rightPart(vect, target, peak);
7978
}
80-
return 0;
8179
}
80+
return 0;
81+
}
8282

83-
int main () {
84-
vector<int> numvect;
85-
int num, target;
86-
cin>>num;
87-
cin>>target;
88-
for (int i = 0; i < num; i++) {
89-
int temp;
90-
cin>>temp;
91-
numvect.push_back(temp);
92-
}
93-
cout<<findElement(numvect, num, target);
94-
return 0;
83+
int main () {
84+
vector<int> numvect;
85+
int num, target;
86+
cin>>num;
87+
cin>>target;
88+
for (int i = 0; i < num; i++) {
89+
int temp;
90+
cin>>temp;
91+
numvect.push_back(temp);
9592
}
93+
cout<<findElement(numvect, num, target);
94+
return 0;
95+
}

CPP/Problems/Find First and Last Position of Element in Sorted Array.cpp

-21
This file was deleted.

CPP/Problems/two-sum.cpp renamed to CPP/Problems/Leetcode-1-Two-Sum.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// https://leetcode.com/problems/two-sum/
12
class Solution {
23
public:
34
vector<int> twoSum(vector<int>& nums, int target) {

CPP/Problems/BinaryTreeLevelOrderTraversal.cpp renamed to CPP/Problems/Leetcode-102-Binary-Tree-Level-Order-Traversal.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// https://leetcode.com/problems/binary-tree-level-order-traversal/
12
class Solution {
23
public:
34
vector<vector<int>> levelOrder(TreeNode* root) {

CPP/Problems/Container With Most Water.cpp renamed to CPP/Problems/Leetcode-11-Container-With-Most-Water.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// https://leetcode.com/problems/container-with-most-water/
12
class Solution {
23
public:
34
int maxArea(vector<int>& height) {

CPP/Problems/Number of Dice Rolls With Target Sum.cpp renamed to CPP/Problems/Leetcode-1155-Number-of-dice-rolls-with-targe-sum.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// https://leetcode.com/problems/number-of-dice-rolls-with-target-sum/
12
class Solution {
23
public:
34

CPP/Problems/Roman to Integer.cpp renamed to CPP/Problems/Leetcode-13-Roman-to-Integer.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// https://leetcode.com/problems/roman-to-integer/
12
class Solution {
23
public:
34
int romanToInt(string s) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// https://leetcode.com/problems/check-if-n-and-its-double-exist/
2+
class Solution {
3+
public:
4+
bool checkIfExist(vector<int>& arr) {
5+
for (int i = 0; i < arr.size(); i++) {
6+
for (int j = 0; j < arr.size(); j++) {
7+
if (i!=j) {
8+
if (arr[i] == 2*arr[j])
9+
return true;
10+
}
11+
}
12+
}
13+
return false;
14+
}
15+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// https://leetcode.com/problems/count-negative-numbers-in-a-sorted-matrix/
2+
class Solution {
3+
public:
4+
int countNegatives(vector<vector<int>>& grid) {
5+
int count = 0;
6+
7+
for (int row = 0; row < grid.size(); row++) {
8+
for (int col = grid[row].size()-1; col >= 0; col--) {
9+
if (grid[row][col] < 0)
10+
count++;
11+
else
12+
break;
13+
}
14+
}
15+
return count;
16+
}
17+
};

CPP/Problems/MaximumProductSubarray.cpp renamed to CPP/Problems/Leetcode-152-Maximum-Product-Subarray.cpp

-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
// Question Link
21
// https://leetcode.com/problems/maximum-product-subarray/
3-
// ----------------------------------------------
4-
52
class Solution {
63
public:
74
int maxProduct(vector<int>& nums) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// https://leetcode.com/problems/matrix-diagonal-sum/
2+
class Solution {
3+
public:
4+
int diagonalSum(vector<vector<int>>& mat) {
5+
int rc = 0;
6+
int TotalSum = 0;
7+
// Primary Diagonal
8+
while (rc < mat.size()) {
9+
TotalSum += mat[rc][rc];
10+
rc++;
11+
}
12+
// Secondary Diagonal
13+
int r = mat.size()-1, c = 0;
14+
while (r >= 0 && c < mat.size()) {
15+
TotalSum += mat[r][c];
16+
r--;
17+
c++;
18+
}
19+
if (mat.size() & 1)
20+
return TotalSum - (mat[mat.size()/2][mat.size()/2]);
21+
return TotalSum;
22+
}
23+
};

CPP/Problems/add-two-numbers.cpp renamed to CPP/Problems/Leetcode-2-Add-Two-Numbers.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// https://leetcode.com/problems/add-two-numbers/
12
/**
23
* Definition for singly-linked list.
34
* struct ListNode {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// https://leetcode.com/problems/power-of-two/
2+
class Solution {
3+
public:
4+
bool isPowerOfTwo(int x) {
5+
return x && (!(x&(x-1)));
6+
}
7+
};

CPP/Problems/biwise_xor_pairing.cpp renamed to CPP/Problems/Leetcode-2425-Bitwise-XOR-Of-All-Pairings.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// https://leetcode.com/problems/bitwise-xor-of-all-pairings/
12
class Solution {
23
public:
34
int xorAllNums(vector<int>& nums1, vector<int>& nums2) {

CPP/Problems/move-zeroes.cpp renamed to CPP/Problems/Leetcode-283-Move-Zeroes.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// https://leetcode.com/problems/move-zeroes/
12
class Solution {
23
public:
34
void moveZeroes(vector<int>& nums) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// https://leetcode.com/problems/find-the-duplicate-number/
2+
class Solution {
3+
public:
4+
int findDuplicate(vector<int>& nums) {
5+
6+
// first thing that comes to my mind is using the set - with O(N) space
7+
// using two for loop (N^2)
8+
// using another array of same size and updating the value if every times
9+
//element is there
10+
int slow=0;
11+
int fast=0;
12+
13+
do {
14+
slow=nums[slow];
15+
fast=nums[nums[fast]];
16+
17+
}while (slow !=fast);
18+
19+
int slow2=0;
20+
21+
while (slow2!=slow){
22+
slow2=nums[slow2];
23+
slow=nums[slow];
24+
}
25+
26+
return slow;
27+
28+
}
29+
};
30+
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,22 @@
1+
// https://leetcode.com/problems/find-first-and-last-position-of-element-in-sorted-array/
12
class Solution {
23
public:
34
vector<int> searchRange(vector<int>& nums, int target) {
4-
int n=nums.size();
5-
int l=0,r=n-1;
6-
int p1=-1,p2=-1;
7-
while(l<=r){
8-
int mid=l+(r-l)/2;
9-
if(nums[mid]==target){
10-
p1=mid;
11-
r=mid-1;
12-
}
13-
else if(nums[mid]>target){
14-
r=mid-1;
15-
}
16-
else
17-
l=mid+1;
5+
vector<int>ans;
6+
auto low=lower_bound(nums.begin(),nums.end(),target);
7+
auto upp=upper_bound(nums.begin(),nums.end(),target);
8+
if(low==nums.end()|| *low!=target )
9+
{
10+
ans.push_back(-1);
11+
ans.push_back(-1);
1812
}
19-
l=0,r=n-1;
20-
while(l<=r){
21-
int mid=l+(r-l)/2;
22-
if(nums[mid]>=target+1){
23-
r=mid-1;
24-
}
25-
else{
26-
27-
l=mid+1;
28-
}
29-
13+
else
14+
{
15+
int start=low-nums.begin();
16+
int end=upp-nums.begin()-1;
17+
ans.push_back(start);
18+
ans.push_back(end);
3019
}
31-
p2=l;
32-
if(p1!=-1)
33-
return {p1,p2-1};
34-
return {-1,-1};
20+
return ans;
3521
}
3622
};

0 commit comments

Comments
 (0)