=====One hour interview Video====
https://www.youtube.com/watch?v=3yQ4Jaumw3g
====Binary Heaps====
[[https://bradfieldcs.com/algos/trees/priority-queues-with-binary-heaps/|Good Binary Heap Tutorial]]
enqueue or dequeue items in O(logn)
**Priority Queues** use a min heap or max heap. In Java use the Comparator:
import java.util.*;
...
PriorityQueue pq = new PriorityQueue(5, new StudentComparator());
...
Class StudentComparator implements Comparator{
// Overriding compare()method of Comparator
// for descending order of cgpa
public int compare(Student s1, Student s2) {
if (s1.cgpa < s2.cgpa)
return 1;
else if (s1.cgpa > s2.cgpa)
return -1;
return 0;
}
}
====Reverse Singly Linked List====
prev = None
cur = head
while cur:
next_node = cur.next
cur.next = prev
prev = cur
cur = next_node
head = prev
====Reverse Double Linked List====
void reverse() {
Node temp = null;
Node current = head;
/* swap next and prev for all nodes of
doubly linked list */
while (current != null) {
temp = current.prev;
current.prev = current.next;
current.next = temp;
current = current.prev;
}
/* Before changing head, check for the cases like empty
list and list with only one node */
if (temp != null) {
head = temp.prev;
}
}
====Power Sets====
All combinations of letters in a string.
Trick = use an integer counter.
/*set_size of power set of a set
with set_size n is (2**n -1)*/
long pow_set_size =
(long)Math.pow(2, set_size);
int counter, j;
/*Run from counter 000..0 to
111..1*/
for(counter = 0; counter <
pow_set_size; counter++)
{
for(j = 0; j < set_size; j++)
{
/* Check if jth bit in the
counter is set If set then
print jth element from set */
if((counter & (1 << j)) > 0)
System.out.print(set[j]);
}
System.out.println();
}
====Tries====
====N Choose K====
n!/((n-k)!k!)
====Knapsack====
====Coins====
====Quick Sort====
====Heaps====
====Spiral====
====Quick Sort====
====Priority Queues====