sp-arrays-and-searching
https://practice.geeksforgeeks.org/tracks/sp-arrays-and-searching/?batchId=152
Problems
Minimum indexed character Solved on Monday: 13 April 2020
t=int(input())
for i in range(t):
s1=list(input())
s2=list(input())
d=0
m=int(len(s1))
for i in range( len(s1)):
if s1[i] in s2:
if (i<m):
m=i
ans=s1[i]
d=1
if d==0:
print ("$")
else:
print (ans)
Boolean String Value Partially Solved on: Monday, 6th April 2020
t=int(input())
l=[]
m=[]
for i in range(t):
s=input()
j=1
ans=0
s=list(s)
p=''
for i in range(len(s)):
if (s[i] == 'C'):
s[i] = '^'
if (s[i] == 'B'):
s[i] = '|'
if (s[i] == 'A'):
s[i] = '&'
s = eval(str(s))
for item in s:
p+=item
print (p)
print (eval(p))
Sum of two large numbers Solved on: Sunday, 5th April 2020
t=int(input())
for i in range(t):
a, b=map(int, input().strip().split())
if (len(str((a+b))) == len(str(a))):
print (a+b)
else:
print(a)
Remove common characters and concatenate Solved on: Sunday, 5th April 2020
t=int(input())
for i in range(t):
s1=input()
s2=input()
l=list(''.join(set(s1).intersection(s2)))
for each in l:
s1=s1.replace(each, '')
s2=s2.replace(each, '')
if (s1+s2 == ''):
print (-1)
else:
print (s1+s2)
Find the fine Solved on: Sunday, 5th April 2020
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, d, i, j, t, total=0;
cin >> t;
while (t--) {
cin >> n >> d;
int arr[n], fine[n];
for (i=0;i<n;i++) {
cin >>arr[i];
}
for (i=0;i<n;i++) {
cin >>fine[i];
}
if (d%2==0) {
for (j=0;j<n;j++) {
if (arr[j]%2 != 0) {
total=total+fine[j];
}
}
} else {
for (j=0;j<n;j++) {
if (arr[j]%2 == 0) {
total=total+fine[j];
}
}
}
cout << total << "\n";
total=0;
}
return 0;
}
Count distinct elements in every window Partially Solved on: Sunday, 5th April 2020
def countDistinct(arr, N, K):
ans=[]
for i in range(N-K+1):
l=[]
for j in range(i, i+k):
l.append(arr[j])
l=list(set(l))
ans.append(len(l))
return ans
vector <int> countDistinct (int arr[], int n, int k) {
map<int, int> m;
int distint=0;
vector<int> v;
for (int i=0;i<k;i++) {
if (m[arr[i]] == 0) {
distint++;
}
m[arr[i]]++;
}
cout << distint << " ";
v.push_back(distint);
for (int i=k;i<n;i++) {
if (m[arr[i-k]]==1)
distint--;
m[arr[i-k]]--;
if (m[arr[i]] == 0){
distint++;
}
m[arr[i]]++;
v.push_back(distint);
}
return v;
}
Sort in specific order Solved on: Saturday, 4th April 2020
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, k, i, j, t;
cin >> t;
while (t--) {
cin >> n ;
int arr[n], ev[n]={-1}, od[n]={-1};
for (i=0;i<n;i++) {
cin >> arr[i];
if (arr[i] % 2 == 0) {
ev[i]=arr[i];
od[i]=-1;
} else {
od[i]=arr[i];
ev[i]=-1;
}
}
sort(ev, ev+n);
sort(od, od+n);
for (j=n-1;j>=0;j--){
if (od[j] != -1 && od[j] != 0){
cout << od[j] << " ";
}
}
for (j=0;j<n;j++){
if (ev[j] != -1 ){
cout << ev[j] << " ";
}
}
cout << "\n";
}
return 0;
}
Find the closest number Solved on: Saturday, 4th April 2020
#include <iostream>
using namespace std;
int main() {
int n, k, i, j, t;
cin >> t;
while (t--) {
cin >> n >> k;
int arr[n], b[n];
for (i=0;i<n;i++) {
cin >> arr[i];
b[i] = abs(arr[i] - k);
}
// for (j=0;j<n;j++) {
// cout << b[j] << " ";
// }
// cout << "\n";
int min=b[n-1], minInd=n-1;
for (int l=0;l<n;l++) {
if (min >= b[l]) {
min = b[l];
minInd = l;
}
}
// cout << min << " " << minInd;
cout << arr[minInd];
cout << "\n";
}
return 0;
}
Print an array in Pendulum Arrangement Solved on: Saturday, 4th April 2020
#include <iostream>
#include <vector>
#include <stdio.h>
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, k, t, i, j;
cin >> t;
while (t--) {
cin >> n;
int arr[n], b[n], mid;
for (int i=0;i<n;i++) {
cin >> arr[i];
}
sort(arr, arr+n);
mid = (n-1)/2;
int j = 1, i = 1;
b[mid] = arr[0];
for (i = 1; i <= mid; i++) {
b[mid+i] = arr[j++];
b[mid-i] = arr[j++];
}
if (n%2 == 0)
b[mid+i] = arr[j];
for (int k=0;k<n;k++) {
cout << b[k] << " ";
}
cout << "\n";
}
return 0;
}
Reverse an Array Solved on: Thursday, 2 April 2020
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, k;
cin >> n;
for (int x=0; x<n;x++) {
cin >> k;
int arr[k];
for (int i=0;i<k;i++) {
cin >> arr[i];
}
int start = 0;
int end = k-1;
while (start<=end) {
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start ++;
end --;
}
for (int j=0; j<k; j++) {
printf("%d ", arr[j]);
}
cout << "\n";
}
return 0;
}
Reverse array in group Solved on: Thursday, 2 April 2020
#include <iostream>
#include <vector>
#include <stdio.h>
using namespace std;
int main() {
int n, i, t, j, k, m;
cin >> t;
while (t--) {
cin >> n >> k;
int arr[n];
for (int i=0;i<n;i++) {
cin >> arr[i];
}
for (j=0;j<n;j=j+k) {
int start = j;
int end = min(j+k-1, n-1);
while (start<=end) {
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start ++;
end --;
}
}
for (int i=0;i<n;i++) {
cout << arr[i] << " ";
}
cout << "\n";
}
return 0;
}
Kth smallest element Solved on: Thursday, 2 April 2020
#include <iostream>
#include <vector>
#include <stdio.h>
#include <bits/stdc++.h>
using namespace std;
int main() {
int t, n, k, i;
cin>>t;
while (t--) {
cin >> n;
int arr[n];
for (i=0; i<n; i++) {
cin >> arr[i];
}
cin >> k;
sort (arr, arr+n);
cout << arr[k-1];
cout << "\n";
}
return 0;
}
Leaders in an array Solved on: Thursday, 1 April 2020
#include <iostream>
#include <stack>
using namespace std;
int main() {
int n, k, j;
cin >> n;
stack<int> s;
for (int i=0;i<n;i++) {
cin >> k;
int arr[k];
for (int j=0;j<k;j++) {
cin >> arr[j];
}
int max=-1;
for (int x=k-1 ; x>=0; x-- ) {
if (arr[x] >= max) {
s.push(arr[x]);
max = arr[x];
}
}
while(! s.empty()) {
cout << s.top() << " ";
s.pop();
}
cout << "\n";
}
return 0;
}
Rotate Array Solved on: Thursday, 31st March 2020
class Solution {
public:
void reversee(int arr[], int start, int end) {
while (start < end) {
swap(arr[start], arr[end]);
start++;
end--;
}
}
void rotateArr(int arr[], int d, int n){
d = n%d;
if (d = 0){
return ;
}
reversee(arr, 0, d-1);
reversee(arr, d, n-1);
reversee(arr, 0, n-1);
}
};
n=int(input())
for i in range(n):
k, m=map(int, input().split())
arr=list(map(int,input().strip().split()))
mod=m%k
for i in range(k):
print (arr[(mod+i)%k], end=" ")
print ("")
Immediate Smaller Element Solved on: Thursday, 30th March 2020
n=int(input())
for i in range(n):
k=int(input())
arr=list(map(int,input().strip().split()))
# print (arr)
for i in range(k-1):
if arr[i+1]<arr[i]:
print (arr[i+1], end=" ")
else:
print ("-1", end=" ")
print ("-1", end=" ")
print ("")
Last updated
Was this helpful?