Skip to content

Instantly share code, notes, and snippets.

@shahzadaazam
shahzadaazam / BinarySearchTree.java
Created December 23, 2020 07:48
Custom implementation of a binary search tree
class Main {
public static void main(String[] args) {
TreeNode root = new TreeNode(5);
root.insert(1);
root.insert(3);
root.insert(7);
root.insert(9);
System.out.println(root.contains(2));
System.out.println(root.contains(3));
@shahzadaazam
shahzadaazam / LinkedList.java
Created December 6, 2020 03:48
LinkedList custom implementation with append, prepend and delete operations
class Main {
public static void main(String[] args) {
Node head = new Node(5);
LinkedList linkedList = new LinkedList(head);
linkedList.append(6);
linkedList.append(7);
linkedList.prepend(4);
linkedList.deleteWithValue(7);
linkedList.printList();
@shahzadaazam
shahzadaazam / HashTable.java
Created November 18, 2020 04:55
Custom implementation of HashTable using LinkedLists and Arrays
import java.util.LinkedList;
class Main {
public static void main(String[] args) {
HashTable<String, String> hashTable = new HashTable<>();
hashTable.put("Azam", "hello");
hashTable.put("Shahani", "world");
System.out.println(hashTable.get("Azam"));
}
}
@shahzadaazam
shahzadaazam / BinarySearch.java
Created November 9, 2020 06:37
Binary search iterative solution
class BinarySearch {
public static void main(String[] args) {
int[] arr = new int[]{1, 2, 3, 4, 5};
System.out.println(binarySearch(arr,4));
}
public static boolean binarySearch(int[] arr, int num) {
int low = 0;
int high = arr.length-1;
@shahzadaazam
shahzadaazam / BinarySearch.java
Created November 9, 2020 05:17
Binary search recursive implementation
class BinarySearch {
public static void main(String[] args) {
int[] arr = new int[]{1, 2, 3, 4, 5};
System.out.println(binarySearch(arr, 0, arr.length-1, 5));
}
public static boolean binarySearch(int[] arr, int left, int right, int num) {
if (left <= right) {
int mid = (left + right) / 2;
@shahzadaazam
shahzadaazam / Quicksort.java
Created November 9, 2020 04:44
Quicksort recursive implementation
class Quicksort {
public static void main(String[] args) {
int[] arr = new int[]{4, 6, 2, 3, 5, 8, 9, 1};
quicksort(arr, 0, arr.length-1);
printArr(arr);
}
public static void quicksort(int[] arr, int left, int right) {
if (left < right) {
int pivot = arr[(left + right)/2];
@shahzadaazam
shahzadaazam / Mergesort.java
Last active October 27, 2020 06:00
Mergesort recursive algorithm
public class MergeSort {
public static void main (String args[]) {
int[] arr = new int[]{5, 2, 3, 1, 4};
int[] helperArr = new int[arr.length];
mergeSort(arr, helperArr, 0, arr.length-1);
for (int i : arr) {
System.out.print(i + " ");
}
@shahzadaazam
shahzadaazam / Knapsack.java
Created January 22, 2019 08:02
Unbounded Knapsack Problem with Memoization
public class Knapsack {
public static void main(String[] args) {
int val[] = new int[]{0, 60, 100, 120};
int wt[] = new int[]{0, 10, 20, 30};
int W = 50;
int n = val.length-1;
int[][] memo = new int[n+1][W+1];
@shahzadaazam
shahzadaazam / Knapsack.java
Created January 22, 2019 07:49
Bounded Knapsack Problem
public class Knapsack {
public static void main(String[] args) {
int val[] = new int[]{0, 60, 100, 120};
int wt[] = new int[]{0, 10, 20, 30};
int W = 50;
int n = val.length-1;
System.out.println(Knapsack.knapsack(wt, val, W, n));
}
@shahzadaazam
shahzadaazam / PermuteString.java
Created January 4, 2019 10:40
Write a program to print all permutations of a given string
import java.util.*;
class PermuteString {
public static void main(String[] args) {
String abc = "ABC";
System.out.println(Solution.permutation(abc));
}
}
class Solution {