50 Leetcode For Infosys
50 Leetcode For Infosys
BY: coding_errOR1
Python
def largest_element(arr):
return max(arr)
Java
class Main {
static int largest(int[] arr) {
int max = arr[0];
for (int x : arr)
if (x > max) max = x;
return max;
}
}
C++
int largest(vector<int>& arr) {
return *max_element([Link](), [Link]());
}
Python
def second_largest(arr):
BY: coding_error1
first = second = -1
for x in arr:
if x > first:
second = first
first = x
elif x > second and x != first:
second = x
return second
Java
static int secondLargest(int[] arr) {
int first = -1, second = -1;
for (int x : arr) {
if (x > first) {
second = first;
first = x;
} else if (x > second && x != first) {
second = x;
}
}
return second;
}
C++
int secondLargest(vector<int>& arr) {
int first = -1, second = -1;
for (int x : arr) {
if (x > first) {
second = first;
first = x;
} else if (x > second && x != first) {
second = x;
}
}
return second;
}
Python
def is_sorted(arr):
return all(arr[i] <= arr[i+1] for i in range(len(arr)-1))
Java
static boolean isSorted(int[] arr) {
BY: coding_error1
for (int i = 0; i < [Link] - 1; i++)
if (arr[i] > arr[i+1]) return false;
return true;
}
C++
bool isSorted(vector<int>& arr) {
return is_sorted([Link](), [Link]());
}
Python
def remove_duplicates(arr):
return len(set(arr))
Java
static int removeDuplicates(int[] arr) {
int i = 0;
for (int j = 1; j < [Link]; j++) {
if (arr[i] != arr[j]) {
i++;
arr[i] = arr[j];
}
}
return i + 1;
}
C++
int removeDuplicates(vector<int>& arr) {
return unique([Link](), [Link]()) - [Link]();
}
Python
BY: coding_error1
def rotate(arr, k):
k %= len(arr)
return arr[-k:] + arr[:-k]
Java
static void rotate(int[] arr, int k) {
k %= [Link];
reverse(arr, 0, [Link] - 1);
reverse(arr, 0, k - 1);
reverse(arr, k, [Link] - 1);
}
C++
void rotate(vector<int>& arr, int k) {
k %= [Link]();
reverse([Link](), [Link]());
reverse([Link](), [Link]() + k);
reverse([Link]() + k, [Link]());
}
Python
def move_zeroes(arr):
return [x for x in arr if x != 0] + [0]*[Link](0)
Java
static void moveZeroes(int[] arr) {
int j = 0;
for (int i = 0; i < [Link]; i++)
if (arr[i] != 0) arr[j++] = arr[i];
while (j < [Link]) arr[j++] = 0;
}
C++
void moveZeroes(vector<int>& arr) {
int j = 0;
for (int i = 0; i < [Link](); i++)
if (arr[i] != 0) arr[j++] = arr[i];
while (j < [Link]()) arr[j++] = 0;
}
BY: coding_error1
Maximum Subarray Sum (Kadane)
Question
Python
def max_subarray(arr):
curr = max_sum = arr[0]
for x in arr[1:]:
curr = max(x, curr + x)
max_sum = max(max_sum, curr)
return max_sum
Java
static int maxSubArray(int[] arr) {
int curr = arr[0], max = arr[0];
for (int i = 1; i < [Link]; i++) {
curr = [Link](arr[i], curr + arr[i]);
max = [Link](max, curr);
}
return max;
}
C++
int maxSubArray(vector<int>& arr) {
int curr = arr[0], maxSum = arr[0];
for (int i = 1; i < [Link](); i++) {
curr = max(arr[i], curr + arr[i]);
maxSum = max(maxSum, curr);
}
return maxSum;
}
Two Sum
Question
Python
def two_sum(nums, target):
mp = {}
for i, n in enumerate(nums):
if target - n in mp:
return [mp[target - n], i]
mp[n] = i
BY: coding_error1
Java
static int[] twoSum(int[] nums, int target) {
HashMap<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < [Link]; i++) {
if ([Link](target - nums[i]))
return new int[]{[Link](target - nums[i]), i};
[Link](nums[i], i);
}
return new int[]{};
}
C++
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> mp;
for (int i = 0; i < [Link](); i++) {
if ([Link](target - nums[i]))
return {mp[target - nums[i]], i};
mp[nums[i]] = i;
}
return {};
}
Majority Element
Question
Python
def majority(arr):
return max(set(arr), key=[Link])
Java
static int majority(int[] arr) {
int count = 0, candidate = 0;
for (int num : arr) {
if (count == 0) candidate = num;
count += (num == candidate) ? 1 : -1;
}
return candidate;
}
C++
int majorityElement(vector<int>& arr) {
int count = 0, candidate = 0;
for (int x : arr) {
if (count == 0) candidate = x;
BY: coding_error1
count += (x == candidate) ? 1 : -1;
}
return candidate;
}
Python
def max_profit(prices):
min_price = prices[0]
profit = 0
for p in prices:
profit = max(profit, p - min_price)
min_price = min(min_price, p)
return profit
Java
static int maxProfit(int[] prices) {
int min = prices[0], profit = 0;
for (int p : prices) {
profit = [Link](profit, p - min);
min = [Link](min, p);
}
return profit;
}
C++
int maxProfit(vector<int>& prices) {
int minPrice = prices[0], profit = 0;
for (int p : prices) {
profit = max(profit, p - minPrice);
minPrice = min(minPrice, p);
}
return profit;
}
Python
def findMax(arr):
return max(arr)
Java
BY: coding_error1
int findMax(int[] arr){
int max = arr[0];
for(int i=1;i<[Link];i++){
if(arr[i]>max) max=arr[i];
}
return max;
}
C++
Python
def findMin(arr):
return min(arr)
Java
C++
1 Reverse an Array
Python
def reverseArray(arr):
return arr[::-1]
Java
BY: coding_error1
void reverseArray(int[] arr){
int l=0, r=[Link]-1;
while(l<r){
int temp=arr[l]; arr[l]=arr[r]; arr[r]=temp;
l++; r--;
}
}
C++
Python
def isSorted(arr):
return all(arr[i]<=arr[i+1] for i in range(len(arr)-1))
Java
C++
Python
def is_rotation(s1, s2):
return len(s1) == len(s2) and s2 in s1 + s1
BY: coding_error1
Java
boolean isRotation(String s1, String s2) {
return [Link]() == [Link]() && (s1 + s1).contains(s2);
}
C++
bool isRotation(string s1, string s2) {
return [Link]() == [Link]() && (s1 + s1).find(s2) != string::npos;
}
Java
int[] countVC(String s) {
int v = 0, c = 0;
for (char ch : [Link]().toCharArray()) {
if ("aeiou".indexOf(ch) != -1) v++;
else if ([Link](ch)) c++;
}
return new int[]{v, c};
}
C++
pair<int,int> countVC(string s) {
int v=0, c=0;
for(char ch: s){
if(isalpha(ch)){
if(string("aeiouAEIOU").find(ch)!=string::npos) v++;
else c++;
}
}
return {v,c};
}
BY: coding_error1
res = 0
for r in range(len(s)):
while s[r] in st:
[Link](s[l]); l += 1
[Link](s[r])
res = max(res, r - l + 1)
return res
Java
int longestUnique(String s) {
Set<Character> set = new HashSet<>();
int l = 0, res = 0;
for (int r = 0; r < [Link](); r++) {
while ([Link]([Link](r)))
[Link]([Link](l++));
[Link]([Link](r));
res = [Link](res, r - l + 1);
}
return res;
}
C++
int longestUnique(string s) {
unordered_set<char> st;
int l=0,res=0;
for(int r=0;r<[Link]();r++){
while([Link](s[r])) [Link](s[l++]);
[Link](s[r]);
res=max(res,r-l+1);
}
return res;
}
1 Valid Parentheses
Python
def is_valid(s):
stack=[]
mp={')':'(',']':'[','}':'{'}
for c in s:
if c in mp:
if not stack or [Link]()!=mp[c]: return False
else: [Link](c)
return not stack
Java
boolean isValid(String s) {
Stack<Character> st = new Stack<>();
for(char c: [Link]()){
if(c=='('||c=='{'||c=='[') [Link](c);
else if([Link]() ||
BY: coding_error1
(c==')'&&[Link]()!='(') ||
(c=='}'&&[Link]()!='{') ||
(c==']'&&[Link]()!='[')) return false;
}
return [Link]();
}
C++
bool isValid(string s){
stack<char> st;
for(char c:s){
if(c=='('||c=='{'||c=='[') [Link](c);
else{
if([Link]()) return false;
char t=[Link](); [Link]();
if((c==')'&&t!='(')||(c=='}'&&t!='{')||(c==']'&&t!='['))
return false;
}
}
return [Link]();
}
Java
void printN(int n){
if(n==0) return;
printN(n-1);
[Link](n+" ");
}
C++
void printN(int n){
if(n==0) return;
printN(n-1);
cout<<n<<" ";
}
2 Factorial
Python
BY: coding_error1
def fact(n):
return 1 if n==0 else n*fact(n-1)
Java
int fact(int n){
return n==0?1:n*fact(n-1);
}
C++
int fact(int n){
return n==0?1:n*fact(n-1);
}
2 Fibonacci (Recursion)
Python
def fib(n):
if n<=1: return n
return fib(n-1)+fib(n-2)
Java
int fib(int n){
if(n<=1) return n;
return fib(n-1)+fib(n-2);
}
C++
int fib(int n){
if(n<=1) return n;
return fib(n-1)+fib(n-2);
}
Java
List<List<Integer>> subsets(int[] nums){
BY: coding_error1
List<List<Integer>> res=new ArrayList<>();
[Link](new ArrayList<>());
for(int n:nums){
int size=[Link]();
for(int i=0;i<size;i++){
List<Integer> temp=new ArrayList<>([Link](i));
[Link](n);
[Link](temp);
}
}
return res;
}
C++
vector<vector<int>> subsets(vector<int>& nums){
vector<vector<int>> res={{}};
for(int n:nums){
int size=[Link]();
for(int i=0;i<size;i++){
auto temp=res[i];
temp.push_back(n);
res.push_back(temp);
}
}
return res;
}
2 Permutations of String
Python
from itertools import permutations
def permute(s):
return list(permutations(s))
Java
void permute(String s, String ans){
if([Link]()==0){
[Link](ans);
return;
}
for(int i=0;i<[Link]();i++)
permute([Link](0,i)+[Link](i+1), ans+[Link](i));
}
C++
void permute(string s, int l){
if(l==[Link]()-1) cout<<s<<endl;
for(int i=l;i<[Link]();i++){
swap(s[l],s[i]);
permute(s,l+1);
swap(s[l],s[i]);
BY: coding_error1
}
}
2 N-Queens Problem
Question: Place N queens on an N×N chessboard so that no two queens attack each other.
Python
def solveNQueens(n):
res, board = [], [-1]*n
def dfs(r):
if r == n:
[Link](board[:])
return
for c in range(n):
for i in range(r):
if board[i] == c or abs(board[i]-c) == r-i:
break
else:
board[r] = c
dfs(r+1)
dfs(0)
return res
Java
void solve(int r, int n, int[] board, List<int[]> res){
if(r==n){ [Link]([Link]()); return; }
for(int c=0;c<n;c++){
boolean ok=true;
for(int i=0;i<r;i++)
if(board[i]==c || [Link](board[i]-c)==r-i) ok=false;
if(ok){
board[r]=c;
solve(r+1,n,board,res);
}
}
}
C++
void solve(int r, int n, vector<int>& board, vector<vector<int>>& res){
if(r==n){ res.push_back(board); return; }
for(int c=0;c<n;c++){
bool ok=true;
for(int i=0;i<r;i++)
if(board[i]==c || abs(board[i]-c)==r-i) ok=false;
if(ok){
board[r]=c;
solve(r+1,n,board,res);
}
}
}
BY: coding_error1
2 Rat in a Maze
Python
def ratMaze(m):
n=len(m)
res=[]
def dfs(x,y,path):
if x==n-1 and y==n-1:
[Link](path); return
if x<0 or y<0 or x>=n or y>=n or m[x][y]==0: return
m[x][y]=0
dfs(x+1,y,path+'D')
dfs(x,y+1,path+'R')
dfs(x-1,y,path+'U')
dfs(x,y-1,path+'L')
m[x][y]=1
dfs(0,0,"")
return res
Java
ListNode reverse(ListNode head){
ListNode prev=null;
while(head!=null){
ListNode nxt=[Link];
[Link]=prev;
prev=head;
head=nxt;
}
return prev;
}
C++
ListNode* reverse(ListNode* head){
ListNode* prev=NULL;
BY: coding_error1
while(head){
ListNode* nxt=head->next;
head->next=prev;
prev=head;
head=nxt;
}
return prev;
}
Java
boolean hasCycle(ListNode head){
ListNode s=head,f=head;
while(f!=null && [Link]!=null){
s=[Link]; f=[Link];
if(s==f) return true;
}
return false;
}
C++
bool hasCycle(ListNode* head){
ListNode *s=head,*f=head;
while(f && f->next){
s=s->next; f=f->next->next;
if(s==f) return true;
}
return false;
}
BY: coding_error1
Java
ListNode middle(ListNode head){
ListNode s=head,f=head;
while(f!=null && [Link]!=null){
s=[Link]; f=[Link];
}
return s;
}
C++
ListNode* middle(ListNode* head){
ListNode *s=head,*f=head;
while(f && f->next){
s=s->next; f=f->next->next;
}
return s;
}
BY: coding_error1
3 Palindrome Linked List
Python
def isPalindrome(head):
vals=[]
while head:
[Link]([Link])
head=[Link]
return vals==vals[::-1]
Java
boolean isPalindrome(ListNode head){
ArrayList<Integer> a=new ArrayList<>();
while(head!=null){ [Link]([Link]); head=[Link]; }
return [Link](new ArrayList<>(a){{
[Link](this);
}});
}
C++
bool isPalindrome(ListNode* head){
vector<int> v;
while(head){ v.push_back(head->val); head=head->next; }
return equal([Link](),[Link](),[Link]());
}
BY: coding_error1
cur=[Link]
l1=[Link] if l1 else None
l2=[Link] if l2 else None
return [Link]
Java
class Stack{
int[] a=new int[100];
int top=-1;
void push(int x){ a[++top]=x; }
int pop(){ return a[top--]; }
}
C++
class Stack{
int a[100], top=-1;
public:
void push(int x){ a[++top]=x; }
int pop(){ return a[top--]; }
};
Java
class Queue{
int[] a=new int[100];
int f=0,r=0;
void enqueue(int x){ a[r++]=x; }
int dequeue(){ return a[f++]; }
}
BY: coding_error1
C++
class Queue{
int a[100], f=0,r=0;
public:
void enqueue(int x){ a[r++]=x; }
int dequeue(){ return a[f++]; }
};
3 Valid Parentheses
Python
def isValid(s):
stack=[]
mp={')':'(',']':'[','}':'{'}
for c in s:
if c in mp:
if not stack or [Link]()!=mp[c]:
return False
else:
[Link](c)
return not stack
Java
boolean isValid(String s){
Stack<Character> st=new Stack<>();
for(char c:[Link]()){
if(c=='('||c=='{'||c=='[') [Link](c);
else{
if([Link]()) return false;
char t=[Link]();
if((c==')'&&t!='(')||(c=='}'&&t!='{')||(c==']'&&t!='['))
return false;
}
}
return [Link]();
}
C++
bool isValid(string s){
stack<char> st;
for(char c:s){
if(c=='('||c=='{'||c=='[') [Link](c);
else{
if([Link]()) return false;
char t=[Link](); [Link]();
if((c==')'&&t!='(')||(c=='}'&&t!='{')||(c==']'&&t!='['))
return false;
}
}
return [Link]();
}
BY: coding_error1
3 Next Greater Element
Python
def nextGreater(nums):
res=[-1]*len(nums)
st=[]
for i in range(len(nums)):
while st and nums[st[-1]]<nums[i]:
res[[Link]()]=nums[i]
[Link](i)
return res
Java
int[] nextGreater(int[] a){
int n=[Link];
int[] res=new int[n];
[Link](res,-1);
Stack<Integer> st=new Stack<>();
for(int i=0;i<n;i++){
while(![Link]() && a[[Link]()]<a[i])
res[[Link]()]=a[i];
[Link](i);
}
return res;
}
C++
vector<int> nextGreater(vector<int>& a){
int n=[Link]();
vector<int> res(n,-1);
stack<int> st;
for(int i=0;i<n;i++){
while(![Link]() && a[[Link]()]<a[i]){
res[[Link]()]=a[i];
[Link]();
}
[Link](i);
}
return res;
}
BY: coding_error1
for _ in range(len(self.q)-1):
[Link]([Link]())
def pop(self):
return [Link]()
Java
class StackUsingQueue{
Queue<Integer> q=new LinkedList<>();
void push(int x){
[Link](x);
for(int i=0;i<[Link]()-1;i++)
[Link]([Link]());
}
int pop(){ return [Link](); }
}
C++
class Stack{
queue<int> q;
public:
void push(int x){
[Link](x);
for(int i=0;i<[Link]()-1;i++){
[Link]([Link]()); [Link]();
}
}
int pop(){ int x=[Link](); [Link](); return x; }
};
Java
class QueueUsingStack{
Stack<Integer> s1=new Stack<>(), s2=new Stack<>();
void enqueue(int x){ [Link](x); }
int dequeue(){
if([Link]())
while(![Link]()) [Link]([Link]());
return [Link]();
BY: coding_error1
}
}
C++
class Queue{
stack<int> s1,s2;
public:
void enqueue(int x){ [Link](x); }
int dequeue(){
if([Link]())
while(![Link]()){
[Link]([Link]()); [Link]();
}
int x=[Link](); [Link]();
return x;
}
};
4 Min Stack
Python
class MinStack:
def __init__(self):
self.s=[]; self.m=[]
def push(self,x):
[Link](x)
[Link](x if not self.m else min(x,self.m[-1]))
def pop(self):
[Link](); [Link]()
def getMin(self):
return self.m[-1]
Java
class MinStack{
Stack<Integer> s=new Stack<>(), m=new Stack<>();
void push(int x){
[Link](x);
[Link]([Link]()?x:[Link](x,[Link]()));
}
void pop(){ [Link](); [Link](); }
int getMin(){ return [Link](); }
}
C++
class MinStack{
stack<int> s,m;
public:
void push(int x){
[Link](x);
[Link]([Link]()?x:min(x,[Link]()));
}
BY: coding_error1
void pop(){ [Link](); [Link](); }
int getMin(){ return [Link](); }
};
4 Frequency of Elements
Python
from collections import Counter
freq = Counter(arr)
Java
HashMap<Integer,Integer> map=new HashMap<>();
for(int x:arr)
[Link](x,[Link](x,0)+1);
C++
unordered_map<int,int> mp;
for(int x:arr) mp[x]++;
BY: coding_error1
Java
int longest(int[] a){
Set<Integer> s=new HashSet<>();
for(int x:a) [Link](x);
int ans=0;
for(int x:s)
if(){
int y=x;
while([Link](y)) y++;
ans=[Link](ans,y-x);
}
return ans;
}
C++
int longest(vector<int>& a){
unordered_set<int> s([Link](),[Link]());
int ans=0;
for(int x:s)
if(){
int y=x;
while([Link](y)) y++;
ans=max(ans,y-x);
}
return ans;
}
Java
boolean zeroSum(int[] a){
HashSet<Integer> s=new HashSet<>();
int sum=0;
for(int x:a){
sum+=x;
if(sum==0||[Link](sum)) return true;
[Link](sum);
}
return false;
}
BY: coding_error1
C++
bool zeroSum(vector<int>& a){
unordered_set<int> s;
int sum=0;
for(int x:a){
sum+=x;
if(sum==0||[Link](sum)) return true;
[Link](sum);
}
return false;
}
Java
int firstUnique(String s){
int[] cnt=new int[26];
for(char c:[Link]()) cnt[c-'a']++;
for(int i=0;i<[Link]();i++)
if(cnt[[Link](i)-'a']==1) return i;
return -1;
}
C++
int firstUnique(string s){
int cnt[26]={0};
for(char c:s) cnt[c-'a']++;
for(int i=0;i<[Link]();i++)
if(cnt[s[i]-'a']==1) return i;
return -1;
}
BY: coding_error1
Java
void inorder(TreeNode r){
if(r==null) return;
inorder([Link]);
[Link]([Link]+" ");
inorder([Link]);
}
C++
void inorder(Node* r){
if(!r) return;
inorder(r->left);
cout<<r->data<<" ";
inorder(r->right);
}
4 Preorder Traversal
Python
def preorder(root):
return [[Link]]+preorder([Link])+preorder([Link]) if root else
[]
4 Postorder Traversal
Python
def postorder(root):
return postorder([Link])+postorder([Link])+[[Link]] if root
else []
BY: coding_error1
[Link](lvl)
return res
Java
int height(TreeNode r){
if(r==null) return 0;
return 1+[Link](height([Link]),height([Link]));
}
C++
int height(Node* r){
if(!r) return 0;
return 1+max(height(r->left),height(r->right));
}
Python
def diameter(root):
ans = 0
def dfs(node):
nonlocal ans
if not node: return 0
l = dfs([Link])
r = dfs([Link])
ans = max(ans, l + r)
return 1 + max(l, r)
dfs(root)
return ans
Java
int dia = 0;
int height(TreeNode r){
if(r==null) return 0;
int l = height([Link]);
int h = height([Link]);
dia = [Link](dia, l + h);
return 1 + [Link](l, h);
}
C++
BY: coding_error1
int dia = 0;
int height(Node* r){
if(!r) return 0;
int l = height(r->left);
int h = height(r->right);
dia = max(dia, l + h);
return 1 + max(l, h);
}
Python
def isBalanced(root):
def dfs(n):
if not n: return 0
l = dfs([Link])
r = dfs([Link])
if l == -1 or r == -1 or abs(l-r) > 1: return -1
return 1 + max(l,r)
return dfs(root) != -1
Java
C++
Python
Java
BY: coding_error1
TreeNode l = lca([Link],p,q);
TreeNode h = lca([Link],p,q);
return (l!=null && h!=null) ? r : (l!=null ? l : h);
}
C++
Python
def maxPathSum(root):
ans = float('-inf')
def dfs(n):
nonlocal ans
if not n: return 0
l = max(0, dfs([Link]))
r = max(0, dfs([Link]))
ans = max(ans, [Link] + l + r)
return [Link] + max(l,r)
dfs(root)
return ans
Java
C++
BY: coding_error1
Python
def serialize(root):
if not root: return "#"
return str([Link]) + "," + serialize([Link]) + "," +
serialize([Link])
Java
C++
5 Binary Search
Python
Java
C++
BY: coding_error1
if(a[m]==x) return m;
else if(a[m]<x) l=m+1;
else r=m-1;
}
return -1;
}
Python
import bisect
def firstLast(a, x):
return bisect.bisect_left(a,x), bisect.bisect_right(a,x)-1
Java
C++
BY: coding_error1
}
return ans;
}
Python
Python
def sqrt(x):
l,r=0,x
ans=0
while l<=r:
m=(l+r)//2
if m*m<=x: ans=m; l=m+1
else: r=m-1
return ans
6 Peak Element
Python
def peak(nums):
l,r=0,len(nums)-1
while l<r:
m=(l+r)//2
if nums[m]<nums[m+1]: l=m+1
else: r=m
return l
Java
BY: coding_error1
if(nums[m]<nums[m+1]) l=m+1;
else r=m;
}
return l;
}
C++
6 BFS Traversal
Python
Java
C++
BY: coding_error1
vector<int> bfs(unordered_map<int, vector<int>>& graph, int start){
unordered_set<int> vis;
queue<int> q;
vector<int> order;
[Link](start); [Link](start);
while(![Link]()){
int u = [Link](); [Link]();
order.push_back(u);
for(int v : graph[u]){
if(){
[Link](v);
[Link](v);
}
}
}
return order;
}
6 DFS Traversal
Python
Java
C++
BY: coding_error1
Python
def hasCycle(graph):
vis=set()
def dfs(u,p):
[Link](u)
for v in graph[u]:
if v not in vis:
if dfs(v,u): return True
elif v!=p: return True
return False
for node in graph:
if node not in vis and dfs(node,-1): return True
return False
Java
C++
Python
BY: coding_error1
def cycleDir(graph):
vis, rec = set(), set()
def dfs(u):
[Link](u)
[Link](u)
for v in graph[u]:
if v not in vis and dfs(v): return True
if v in rec: return True
[Link](u)
return False
return any(dfs(node) for node in graph if node not in vis)
6 Number of Islands
Python
def numIslands(grid):
m,n=len(grid),len(grid[0])
def dfs(i,j):
if i<0 or j<0 or i>=m or j>=n or grid[i][j]=='0': return
grid[i][j]='0'
for dx,dy in [(1,0),(-1,0),(0,1),(0,-1)]:
dfs(i+dx,j+dy)
cnt=0
for i in range(m):
for j in range(n):
if grid[i][j]=='1':
cnt+=1
dfs(i,j)
return cnt
Java
C++
BY: coding_error1
int numIslands(vector<vector<char>>& g){
int m=[Link](), n=g[0].size(), count=0;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(g[i][j]=='1'){ count++; dfs(g,i,j,m,n); }
}
}
return count;
}
Python
def topoSort(graph):
vis = set()
res = []
def dfs(u):
[Link](u)
for v in graph[u]:
if v not in vis: dfs(v)
[Link](u)
for node in graph:
if node not in vis: dfs(node)
return res[::-1]
Python
import heapq
def dijkstra(graph, start):
dist = {i:float('inf') for i in graph}
dist[start] = 0
pq = [(0,start)]
while pq:
d,u = [Link](pq)
if d>dist[u]: continue
for v,w in graph[u]:
if dist[u]+w<dist[v]:
dist[v] = dist[u]+w
[Link](pq,(dist[v],v))
return dist
Python
def bipartite(graph):
color = {}
def dfs(u, c):
color[u] = c
for v in graph[u]:
BY: coding_error1
if v not in color:
if not dfs(v,1-c): return False
elif color[v]==c: return False
return True
return all(dfs(u,0) for u in graph if u not in color)
6 Fibonacci (DP)
Python
def fib(n):
if n<=1: return n
a,b=0,1
for _ in range(2,n+1):
a,b=b,a+b
return b
Java
C++
7 Climbing Stairs
Python
def climb(n):
a,b=1,1
for _ in range(n-1):
a,b=b,a+b
return b
Java
BY: coding_error1
int t=a+b; a=b; b=t;
}
return b;
}
C++
Python
Java
C++
BY: coding_error1
7 Longest Common Subsequence (LCS)
Python
def lcs(a,b):
m,n=len(a),len(b)
dp=[[0]*(n+1) for _ in range(m+1)]
for i in range(1,m+1):
for j in range(1,n+1):
if a[i-1]==b[j-1]: dp[i][j]=1+dp[i-1][j-1]
else: dp[i][j]=max(dp[i-1][j],dp[i][j-1])
return dp[m][n]
Java
C++
Python
def lis(arr):
n=len(arr)
dp=[1]*n
for i in range(n):
for j in range(i):
if arr[i]>arr[j]:
dp[i]=max(dp[i], dp[j]+1)
return max(dp)
Java
BY: coding_error1
int lis(int[] arr){
int n=[Link];
int[] dp=new int[n];
[Link](dp,1);
for(int i=0;i<n;i++){
for(int j=0;j<i;j++){
if(arr[i]>arr[j]) dp[i]=[Link](dp[i], dp[j]+1);
}
}
int max=0;
for(int x: dp) max=[Link](max,x);
return max;
}
C++
Python
Java
BY: coding_error1
C++
Python
def matrixChain(arr):
n=len(arr)
dp=[[0]*n for _ in range(n)]
for l in range(2,n):
for i in range(1,n-l+1):
j=i+l-1
dp[i][j]=float('inf')
for k in range(i,j):
dp[i][j]=min(dp[i][j], dp[i][k]+dp[k+1][j]+arr[i-
1]*arr[k]*arr[j])
return dp[1][n-1]
Java
C++
BY: coding_error1
dp[i][j]=INT_MAX;
for(int k=i;k<j;k++)
dp[i][j]=min(dp[i][j], dp[i][k]+dp[k+1][j]+arr[i-
1]*arr[k]*arr[j]);
}
}
return dp[1][n-1];
}
___________________________________________________________________________
Best of Luck!
Prepare these DSA questions well, master the concepts, and confidently apply for your dream
job. Every effort you put in now will pay off in your career journey!
BY: @coding_error1
BY: coding_error1