Skip to content

Instantly share code, notes, and snippets.

View OmarKRostom's full-sized avatar
👨‍💻
Shush ... crafting some software

Omar Khairy Rostom OmarKRostom

👨‍💻
Shush ... crafting some software
View GitHub Profile
@OmarKRostom
OmarKRostom / minimumBribes.kt
Last active August 17, 2019 12:36
Solution to minimum bribes in Kotlin (https://bit.ly/2OsT2F4)
var totalBribes = 0
fun minimumBribes(arr: Array<Int>): Unit {
var currentPerson = 1
var bribeArr = arr.clone()
var bribeMap = HashMap<Int, Int>().apply {
var index = 0
bribeArr.forEach {
put(it, index++)
}
@OmarKRostom
OmarKRostom / PrisonAfterNDays.kt
Last active August 24, 2019 04:03
Solution to prison after n days problem. Time Complexity O(M^N)
fun prisonAfterNDays(cells: IntArray, N: Int): IntArray {
var currentIndex = 0
val prisonMap = HashMap<List<Int>, Int>()
while (currentIndex < N) {
var tempArr = cells.clone()
if (prisonMap[tempArr.toList()]?.hashCode() != null) {
val cycleLength = currentIndex - prisonMap[tempArr.toList()]!!
val remainingDays = N - currentIndex
@OmarKRostom
OmarKRostom / minimumSwaps2.kt
Created September 3, 2019 01:54
Solution to minimum swaps 2 on hackerrank
// Complete the minimumSwaps function below.
fun minimumSwaps(arr: Array<Int>): Int {
var numberOfSwaps = 0
val sortingMap: HashMap<Int, Int> = HashMap()
// Build hashing map, ex.
// [7, 1, 3, 2, 4, 5, 6]
// [0, 1, 2, 3, 4, 5, 6]
for (hashingIndex in 0 until arr.size) {
sortingMap[arr[hashingIndex]] = hashingIndex
@OmarKRostom
OmarKRostom / SumTwoInts.kt
Created September 24, 2019 10:50
Solution to two sums in kotlin (https://bit.ly/2GjpF4v)
fun addTwoNumbers(l1: ListNode?, l2: ListNode?, nextNode: ListNode? = totalNode): ListNode? {
val firstVal = l1?.`val` ?: 0
val secondVal = l2?.`val` ?: 0
var total = firstVal + secondVal + (nextNode?.`val` ?: 0)
if (total >= 10) {
total = total.rem(10)
carryOn = 1
}
fun totalFruit(tree: IntArray): Int {
val collectedFruitSet = ArrayList<Int>()
var lastMax = 0
for (loopingIndex in 0 until tree.size) {
if (tree.distinct().count() <= 2) {
lastMax = tree.size
break
} else if (collectedFruitSet.distinct().count() < 2 || (
collectedFruitSet.distinct().count() == 2 && collectedFruitSet.contains(tree[loopingIndex])
public static List<String> removeSubfolders(String[] folders) {
HashSet<String> rootFoldersOnly = new HashSet<>();
HashSet<String> setFolders = new HashSet<>(Arrays.asList(folders));
for (String folder: folders) {
int searchIndex = 0;
int currentSegmentIndex = 1;
String matchingDirectory = "";
String[] segments = folder.split("/");
@OmarKRostom
OmarKRostom / ShiftNums.java
Created December 29, 2019 13:51
A way to solve shift numbers in java
public static int[] shiftNums(int[] nums, int shiftCount) {
int[] numsClone = nums.clone();
while (shiftCount > 0) {
int itemToBeShifted = nums[nums.length - 1];
for (int i = 0; i < nums.length - 1; i++) {
nums[i + 1] = numsClone[i];
}
public static ArrayList<List<String>> suggestedProducts(String[] products, String searchWord) {
ArrayList<List<String>> res = new ArrayList<>();
List<String> sortedProducts = Arrays.asList(products);
Collections.sort(sortedProducts);
for (int charIndex = 1; charIndex <= searchWord.length(); charIndex++) {
String currentInput = searchWord.substring(0, charIndex);
ArrayList<String> subList = new ArrayList<>();
int currentIndex = 0;
while (currentIndex < sortedProducts.size()) {
server {
listen [::]:443 ssl;
listen 443 ssl;
server_name api.rostom.dev;
ssl_certificate /etc/letsencrypt/live/api.rostom.dev/fullchain.pem; # manag$
ssl_certificate_key /etc/letsencrypt/live/api.rostom.dev/privkey.pem; # man$
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
location / {
@OmarKRostom
OmarKRostom / UniqueHiring.kt
Created April 23, 2020 08:54
A unique hiring problem using hashet
fun main(vararg args: String) {
val nameSet: HashSet<String> = getUniqueListOfNames(listOf("Ahmed", "Ahmed", "Hassan", "Omar"))
println(validateHiring(nameSet, "Hamada"))
}
fun validateHiring(nameSet: HashSet<String>, searchingName: String): Boolean = !nameSet.contains(searchingName)
fun getUniqueListOfNames(listOfFullNames: List<String>): HashSet<String> {
val nameSet = HashSet<String>()