Here is a non-exhaustive list of problem-solving questions.


  • Pre-read:

Questions


1 fizz-buzz  
2 Warmup-2 > last2 Question description is confusing. Focus on sample input and output. Count the last 2 chars substring in given string except the last 2chars
3 Warmup-2 > arrayCount9 HINT: Use 2-pointer
4 Warmup-2 > countXX  
5 Warmup-2 > stringX  
6 Warmup-2 > has271  
7 Warmup-2 > altPairs  
8 String1 > minCat  
9 String-1 > without2  
10 String-1 > startWord  
11 String-1 > withoutX  
12 String-1 > withoutX2  
13 minimum-moves-to-equal-array-elements  
14 minimum-moves-to-equal-array-elements-ii  
15 longest-happy-string  
16 fibonacci-number  
17 reverse-integer  

NOTE: In math division we have 2 parts - remainder and quotient. In programming we use

  • % operator to find the remainder and
  • / operator to find the quotient
  • Example Algorithm/pseudocode

Given a number 123

Divide by 10

123 / 10 = 12(quotient)

123 % 10 = 3(remainder)

initialize 3 vars reverse=0, remainder=0, number=123

while(number != 0) {
    remainder = number % 10;
    reverse = reverse*10 + remainder;
    number /= 10;
}

Finally, the reverse var has the reversed value

18 gcd-of-two-numbers Refer Algorithm: Euclidian Algorithm
19 armstrong-number
Alternative Link: armstrong-numbers
 
20 palindrome-number
Note: Solve it without converting the input to String
 
21 Give a string in form of char[] reverse it in place
Note: Solve it in-place
HINT: 2 pointers at front and back, break the loop when i < j and swap chars
22 two-sum  
23 three-sum  
24 contains-duplicate  
25 valid-anagram  
26 Valid Parentheses HINT: java.util.Stack(push, peek, pop) + switch statement
27 kth-largest-element-in-an-array
Note: Solve it without Sorting
HINT: with offer() load the given array into PriorityQueue(ADT)(Initialize the priority queue as max-heap passing Comparator.reverseOrder()) and poll() the head k times
28 best-time-to-buy-and-sell-stock  
29 Reverse a Linked list  
  • Linked List Insertion: Linked List insertion logic
  • Linked List Reversal: Linked List reversal logic
30 Remove Linked List elements  
31 Move Zeros  
32 Max Sub array sum  
33 Top k Frequent elements  
34 Rotate array to right k steps  
35 LRU Cache  
  • HINT:
    • Option1: LinkedList(Is a Doubly LinkedList in Java) + HashMap
    • Option2:
      int capacity = 2;
      LinkedHashMap<Integer, Integer> lhs =
      new LinkedHashMap<>(capacity, 0.75f, true) {
    
        @Override
        protected boolean removeEldestEntry(java.util.Map.Entry<Integer, Integer> eldest) {
          return size() > capacity;
        }
      };
    
36 Reverse words in a string  
37 Reverse Words  
38 Array-1 > unlucky1  

References

  1. NeetCode practice