Skip to content

Commit 24a655a

Browse files
committed
first bad version
1 parent 6f6b2a5 commit 24a655a

File tree

4 files changed

+82
-30
lines changed

4 files changed

+82
-30
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@
55
| S.No. | Topic | Status |
66
|---|--------------|-----|
77
|01. | [Array](https://github.com/geeky01adarsh/DSA-Interview-Questions/tree/main/Arrays) | 24/28 |
8-
|02. | [Searching](/Searching)|2/38|
8+
|02. | [Searching](/Searching)|3/38|

Searching/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
|S.no.|Question|Solution|
55
|---|------------|------------|
66
|1|[Square Root](https://leetcode.com/problems/sqrtx/)|[Solution](sqrt.cpp)|
7-
|2| [First Bad Version](https://leetcode.com/problems/first-bad-version/)|[Solution](two_sum_ii_input_array_is_sorted.cpp)|
8-
|3| [Two Sum II - Input array is sorted](https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/)|Pending|
7+
|2| [First Bad Version](https://leetcode.com/problems/first-bad-version/)|[Solution](first_bad_version.cpp)|
8+
|3| [Two Sum II - Input array is sorted](https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/)|[Solution](two_sum_ii_input_array_is_sorted.cpp)|
99
|4| [Valid Perfect Square](https://leetcode.com/problems/valid-perfect-square/)|Pending|
1010
|5| [Arranging Coins(Easy)](https://leetcode.com/problems/arranging-coins/)|Pending|
1111
|6| [Find Smallest Letter Greater Than Target](https://leetcode.com/problems/find-smallest-letter-greater-than-target/)|Pending|

Searching/first_bad_version.cpp

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#include <bits/stdc++.h>
2+
using namespace std;
3+
4+
vector<bool> check;
5+
6+
bool isBadVersion(int n){
7+
return check[n];
8+
}
9+
10+
int firstBadVersion(int n)
11+
{
12+
int low = 0, high = n;
13+
while (low <= high)
14+
{
15+
int mid = low + (high - low) / 2;
16+
if (!isBadVersion(mid))
17+
{
18+
if (!isBadVersion(mid + 1))
19+
low = mid + 1;
20+
else
21+
return mid + 1;
22+
}
23+
else
24+
high = mid - 1;
25+
}
26+
return -1;
27+
}
28+
29+
int main(){
30+
int n, x;
31+
cin>>n>>x;
32+
for(int i=0; i<n; i++){
33+
if(i<x) check.push_back(0);
34+
else check.push_back(1);
35+
}
36+
37+
cout << firstBadVersion(n)<<endl;
38+
return 0;
39+
}

Searching/two_sum_ii_input_array_is_sorted.cpp

+40-27
Original file line numberDiff line numberDiff line change
@@ -2,44 +2,57 @@
22
using namespace std;
33

44
int binary_search(vector<int> arr, int n, int target, int i)
5+
{
6+
int low = 0, high = n - 1;
7+
while (low <= high)
58
{
6-
int low=0, high=n-1;
7-
while(low<=high){
8-
int mid = low+(high-low)/2;
9-
if(arr[mid]==target)
10-
{ if(mid != i)return mid;
11-
else if(arr[mid-1]==target) return mid-1;
12-
else return mid+1;
13-
}
14-
else if(arr[mid]>target) high=mid-1;
15-
else low = mid+1;
9+
int mid = low + (high - low) / 2;
10+
if (arr[mid] == target)
11+
{
12+
if (mid != i)
13+
return mid;
14+
else if (arr[mid - 1] == target)
15+
return mid - 1;
16+
else
17+
return mid + 1;
1618
}
17-
return -1;
19+
else if (arr[mid] > target)
20+
high = mid - 1;
21+
else
22+
low = mid + 1;
1823
}
19-
vector<int> twoSum(vector<int>& num, int target) {
20-
int n = num.size();
21-
for(int i=0; i<n; i++){
22-
int temp =binary_search(num, n, target-num[i], i);
23-
if(temp!=-1)
24-
return {i+1, temp+1};
25-
}
26-
return {-1, -1};
24+
return -1;
25+
}
26+
27+
vector<int> twoSum(vector<int> &num, int target)
28+
{
29+
int n = num.size();
30+
for (int i = 0; i < n; i++)
31+
{
32+
int temp = binary_search(num, n, target - num[i], i);
33+
if (temp != -1)
34+
return {i + 1, temp + 1};
2735
}
36+
return {-1, -1};
37+
}
2838

29-
int main(){
39+
int main()
40+
{
3041
int t;
31-
cin>>t;
32-
while(t--){
42+
cin >> t;
43+
while (t--)
44+
{
3345
int n, target;
34-
cin>>n>>target;
46+
cin >> n >> target;
3547
vector<int> v;
36-
for(int i=0; i<n; i++){
48+
for (int i = 0; i < n; i++)
49+
{
3750
int temp;
38-
cin>>temp;
51+
cin >> temp;
3952
v.push_back(temp);
4053
}
41-
vector<int> ans=twoSum(v, target);
42-
cout<<ans[0]<<" "<<ans[1]<<endl;
54+
vector<int> ans = twoSum(v, target);
55+
cout << ans[0] << " " << ans[1] << endl;
4356
}
4457
return 0;
4558
}

0 commit comments

Comments
 (0)