Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
16 views5 pages

DeltaX Round2 All20 Java

Uploaded by

roopasree004
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views5 pages

DeltaX Round2 All20 Java

Uploaded by

roopasree004
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

DeltaX Round 2 – All 20 Java Solutions

// DeltaX Round 2 – Online Coding Problems (Java Templates)


import java.util.*;

class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
class TreeNode {
int val;
TreeNode left, right;
TreeNode(int v){ val=v; }
}

// 1. Two Sum
class TwoSum {
public int[] twoSum(int[] nums, int target) {
Map<Integer,Integer> map = new HashMap<>();
for (int i=0;i<nums.length;i++){
int diff=target-nums[i];
if(map.containsKey(diff)) return new int[]{map.get(diff),i};
map.put(nums[i],i);
}
return new int[]{};
}
}

// 2. Valid Parentheses
class ValidParentheses {
public boolean isValid(String s) {
Map<Character,Character> pairs = Map.of(')', '(', ']', '[', '}', '{');
Stack<Character> st=new Stack<>();
for(char c:s.toCharArray()){
if(pairs.containsValue(c)) st.push(c);
else if(st.isEmpty()||st.pop()!=pairs.get(c)) return false;
}
return st.isEmpty();
}
}

// 3. Merge Two Sorted Lists


class MergeTwoLists {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode dummy=new ListNode(0),tail=dummy;
while(l1!=null&&l2!=null){
if(l1.val<=l2.val){ tail.next=l1;l1=l1.next;}
else{ tail.next=l2;l2=l2.next;}
tail=tail.next;
}
tail.next=(l1!=null)?l1:l2;
return dummy.next;
}
}

// 4. Remove Duplicates from Sorted Array


class RemoveDuplicates {
public int removeDuplicates(int[] nums){
if(nums.length==0) return 0;
int w=1;
for(int i=1;i<nums.length;i++){
if(nums[i]!=nums[w-1]) nums[w++]=nums[i];
}
return w;
}
}

// 5. Maximum Subarray
class MaxSubArray {
public int maxSubArray(int[] nums){
int cur=nums[0],best=nums[0];
for(int i=1;i<nums.length;i++){
cur=Math.max(nums[i],cur+nums[i]);
best=Math.max(best,cur);
}
return best;
}
}

// 6. Longest Substring Without Repeating Characters


class LongestSubstring {
public int lengthOfLongestSubstring(String s){
Map<Character,Integer> last=new HashMap<>();
int start=0,best=0;
for(int i=0;i<s.length();i++){
char c=s.charAt(i);
if(last.containsKey(c)&&last.get(c)>=start) start=last.get(c)+1;
last.put(c,i);
best=Math.max(best,i-start+1);
}
return best;
}
}

// 7. Kth Largest Element


class KthLargest {
public int findKthLargest(int[] nums,int k){
return quickSelect(nums,0,nums.length-1,nums.length-k);
}
private int quickSelect(int[] a,int l,int r,int k){
if(l==r) return a[l];
int pivot=a[(l+r)/2],i=l,j=r;
while(i<=j){
while(a[i]<pivot) i++;
while(a[j]>pivot) j--;
if(i<=j){ int t=a[i];a[i]=a[j];a[j]=t;i++;j--; }
}
if(k<=j) return quickSelect(a,l,j,k);
if(k>=i) return quickSelect(a,i,r,k);
return a[k];
}
}

// 8. Top K Frequent Elements


class TopKFrequent {
public int[] topKFrequent(int[] nums,int k){
Map<Integer,Integer> freq=new HashMap<>();
for(int n:nums) freq.put(n,freq.getOrDefault(n,0)+1);
List<Integer>[] buckets=new ArrayList[nums.length+1];
for(int n:freq.keySet()){
int f=freq.get(n);
if(buckets[f]==null) buckets[f]=new ArrayList<>();
buckets[f].add(n);
}
int[] ans=new int[k];int idx=0;
for(int i=buckets.length-1;i>=0&&idx<k;i--){
if(buckets[i]!=null){
for(int n:buckets[i]){
ans[idx++]=n;
if(idx==k) return ans;
}
}
}
return ans;
}
}

// 9. Group Anagrams
class GroupAnagrams {
public List<List<String>> groupAnagrams(String[] strs){
Map<String,List<String>> map=new HashMap<>();
for(String s:strs){
char[] arr=s.toCharArray();
Arrays.sort(arr);
String key=new String(arr);
map.computeIfAbsent(key,x->new ArrayList<>()).add(s);
}
return new ArrayList<>(map.values());
}
}

// 10. Find Peak Element


class PeakElement {
public int findPeakElement(int[] nums){
int l=0,r=nums.length-1;
while(l<r){
int m=(l+r)/2;
if(nums[m]<nums[m+1]) l=m+1;
else r=m;
}
return l;
}
}

// 11. Sort Colors


class SortColors {
public void sortColors(int[] a){
int l=0,i=0,r=a.length-1;
while(i<=r){
if(a[i]==0){ int t=a[l];a[l]=a[i];a[i]=t;l++;i++; }
else if(a[i]==2){ int t=a[r];a[r]=a[i];a[i]=t;r--; }
else i++;
}
}
}

// 12. Subarray Sum Equals K


class SubarraySumK {
public int subarraySum(int[] nums,int k){
Map<Integer,Integer> cnt=new HashMap<>();
cnt.put(0,1);
int s=0,ans=0;
for(int x:nums){
s+=x;
ans+=cnt.getOrDefault(s-k,0);
cnt.put(s,cnt.getOrDefault(s,0)+1);
}
return ans;
}
}

// 13. Rotate Image


class RotateImage {
public void rotate(int[][] m){
int n=m.length;
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
int t=m[i][j];m[i][j]=m[j][i];m[j][i]=t;
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n/2;j++){
int t=m[i][j];m[i][j]=m[i][n-1-j];m[i][n-1-j]=t;
}
}
}
}

// 14. Number of Islands


class NumIslands {
public int numIslands(char[][] g){
if(g.length==0) return 0;
int R=g.length,C=g[0].length,res=0;
for(int r=0;r<R;r++) for(int c=0;c<C;c++) if(g[r][c]=='1'){res++;dfs(g,r,c);}
return res;
}
private void dfs(char[][] g,int r,int c){
int R=g.length,C=g[0].length;
if(r<0||c<0||r>=R||c>=C||g[r][c]!='1') return;
g[r][c]='0';
dfs(g,r+1,c);dfs(g,r-1,c);dfs(g,r,c+1);dfs(g,r,c-1);
}
}
// 15. Word Ladder (length)
class WordLadder {
public int ladderLength(String begin,String end,List<String> wordList){
Set<String> dict=new HashSet<>(wordList);
if(!dict.contains(end)) return 0;
Queue<String> q=new LinkedList<>();q.add(begin);
Set<String> vis=new HashSet<>();vis.add(begin);
int steps=1;
while(!q.isEmpty()){
int sz=q.size();
for(int i=0;i<sz;i++){
String w=q.poll();
if(w.equals(end)) return steps;
char[] arr=w.toCharArray();
for(int j=0;j<arr.length;j++){
char orig=arr[j];
for(char ch='a';ch<='z';ch++){
arr[j]=ch;String nw=new String(arr);
if(dict.contains(nw)&&vis.add(nw)) q.add(nw);
}
arr[j]=orig;
}
}
steps++;
}
return 0;
}
}

// 16. Median of Two Sorted Arrays


class MedianTwoArrays {
public double findMedianSortedArrays(int[] A,int[] B){
if(A.length>B.length) return findMedianSortedArrays(B,A);
int m=A.length,n=B.length,total=(m+n+1)/2;
int lo=0,hi=m;
while(lo<=hi){
int i=(lo+hi)/2;int j=total-i;
int Aleft=(i==0)?Integer.MIN_VALUE:A[i-1];
int Aright=(i==m)?Integer.MAX_VALUE:A[i];
int Bleft=(j==0)?Integer.MIN_VALUE:B[j-1];
int Bright=(j==n)?Integer.MAX_VALUE:B[j];
if(Aleft<=Bright&&Bleft<=Aright){
if((m+n)%2==1) return Math.max(Aleft,Bleft);
return (Math.max(Aleft,Bleft)+Math.min(Aright,Bright))/2.0;
} else if(Aleft>Bright) hi=i-1; else lo=i+1;
}
return 0.0;
}
}

// 17. LFU Cache


class LFUCache {
private final int cap;private int minf;
private Map<Integer,Integer> val=new HashMap<>(),freq=new HashMap<>();
private Map<Integer,LinkedHashSet<Integer>> lists=new HashMap<>();
public LFUCache(int capacity){cap=capacity;}
public int get(int key){
if(!val.containsKey(key)) return -1;
int f=freq.get(key);freq.put(key,f+1);
lists.get(f).remove(key);
lists.computeIfAbsent(f+1,x->new LinkedHashSet<>()).add(key);
if(lists.get(f).isEmpty()){lists.remove(f);if(minf==f) minf++;}
return val.get(key);
}
public void put(int key,int value){
if(cap==0) return;
if(val.containsKey(key)){val.put(key,value);get(key);return;}
if(val.size()>=cap){
LinkedHashSet<Integer> set=lists.get(minf);
int evict=set.iterator().next();
set.remove(evict);if(set.isEmpty()) lists.remove(minf);
val.remove(evict);freq.remove(evict);
}
val.put(key,value);freq.put(key,1);
lists.computeIfAbsent(1,x->new LinkedHashSet<>()).add(key);
minf=1;
}
}

// 18. Trapping Rain Water


class TrapRainWater {
public int trap(int[] h){
int l=0,r=h.length-1,lm=0,rm=0,ans=0;
while(l<r){
if(h[l]<h[r]){
if(h[l]>=lm) lm=h[l]; else ans+=lm-h[l];
l++;
} else {
if(h[r]>=rm) rm=h[r]; else ans+=rm-h[r];
r--;
}
}
return ans;
}
}

// 19. Serialize and Deserialize Binary Tree


class Codec {
public String serialize(TreeNode root){
if(root==null) return "";
StringBuilder sb=new StringBuilder();Queue<TreeNode> q=new LinkedList<>();q.add(root);
while(!q.isEmpty()){
TreeNode node=q.poll();
if(node==null){sb.append("null,");continue;}
sb.append(node.val).append(",");q.add(node.left);q.add(node.right);
}
return sb.toString();
}
public TreeNode deserialize(String data){
if(data.isEmpty()) return null;
String[] vals=data.split(",");TreeNode root=new TreeNode(Integer.parseInt(vals[0]));
Queue<TreeNode> q=new LinkedList<>();q.add(root);int i=1;
while(!q.isEmpty()&&i<vals.length){
TreeNode node=q.poll();
if(!vals[i].equals("null")){node.left=new TreeNode(Integer.parseInt(vals[i]));q.add(node.left);}
if(i<vals.length&&!vals[i].equals("null")){node.right=new TreeNode(Integer.parseInt(vals[i]));q.
}
return root;
}
}

// 20. Alien Dictionary


class AlienDictionary {
public String alienOrder(String[] words){
Map<Character,Set<Character>> g=new HashMap<>();
Map<Character,Integer> indeg=new HashMap<>();
for(String w:words) for(char c:w.toCharArray()){g.putIfAbsent(c,new HashSet<>());indeg.putIfAbsent(c
for(int i=0;i<words.length-1;i++){
String w1=words[i],w2=words[i+1];
if(w1.length()>w2.length()&&w1.startsWith(w2)) return "";
int len=Math.min(w1.length(),w2.length());
for(int j=0;j<len;j++){char a=w1.charAt(j),b=w2.charAt(j);
if(a!=b){if(g.get(a).add(b)) indeg.put(b,indeg.get(b)+1);break;}
}
}
Queue<Character> q=new LinkedList<>();for(char c:indeg.keySet()) if(indeg.get(c)==0) q.add(c);
StringBuilder sb=new StringBuilder();
while(!q.isEmpty()){char c=q.poll();sb.append(c);for(char nei:g.get(c)){indeg.put(nei,indeg.get(nei)
return sb.length()==indeg.size()?sb.toString():"";
}
}

You might also like