Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
150 changes: 137 additions & 13 deletions src/main/java/CollectionsHackerrank/CollectionsHackerrankProblems.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package CollectionsHackerrank;

import java.util.List;
import java.util.Map;
import java.util.Queue;
import java.util.*;

public class CollectionsHackerrankProblems {
public class CollectionsHackerrankPractice {
Expand All @@ -23,9 +21,15 @@ public static void main(String[] args) {
*/
public static List<Integer> removeDuplicates(List<Integer> numbers) {

if (numbers == null || numbers.isEmpty()) {
return new ArrayList<>();
}

LinkedHashSet<Integer> uniqueNumbers = new LinkedHashSet<>(numbers);

// TODO: Implement this method

return null;
return new ArrayList<>(uniqueNumbers);
}

/*
Expand All @@ -37,10 +41,18 @@ public static List<Integer> removeDuplicates(List<Integer> numbers) {
Output: {1=1, 2=2, 3=3}
*/
public static Map<Integer, Integer> countFrequency(List<Integer> numbers) {
if (numbers == null || numbers.isEmpty()) {
return new HashMap<>();
}

// TODO: Implement this method

return null;
Map<Integer, Integer> frequencyMap = new HashMap<>();
for (int number : numbers) {
frequencyMap.put(number, frequencyMap.getOrDefault(number, 0) + 1);
}

return frequencyMap;
}

/*
Expand All @@ -53,6 +65,19 @@ public static Map<Integer, Integer> countFrequency(List<Integer> numbers) {
*/
public static Integer firstUnique(List<Integer> numbers) {

if (numbers == null || numbers.isEmpty()) {
return null;
}
Map<Integer, Integer> frequencyMap = new HashMap<>();
for (int number : numbers) {
frequencyMap.put(number, frequencyMap.getOrDefault(number, 0) + 1);
}
for (int number : numbers) {
if (frequencyMap.get(number) == 1) {
return number;
}
}

// TODO: Implement this method

return null;
Expand All @@ -69,11 +94,26 @@ public static Integer firstUnique(List<Integer> numbers) {
Output: true
*/
public static boolean twoSum(List<Integer> numbers, int target) {
if (numbers == null || numbers.isEmpty()) {

// TODO: Implement this method
// TODO: Implement this method

return false;
}
HashSet<Integer> seenNumbers = new HashSet<>();
for (int number : numbers) {
int complement = target - number;

if (seenNumbers.contains(complement)) {
return true;
}

seenNumbers.add(number);
}
return false;
}
}


/*
Problem 5
Expand All @@ -84,10 +124,14 @@ public static boolean twoSum(List<Integer> numbers, int target) {
Output: 3
*/
public static int countUniqueWords(List<String> words) {
if (words == null || words.isEmpty()) {
return 0;
}
HashSet<String> uniqueWords = new HashSet<>(words);

// TODO: Implement this method

return 0;
return uniqueWords.size();
}

/*
Expand All @@ -99,10 +143,22 @@ public static int countUniqueWords(List<String> words) {
Output: [4,3,2,1]
*/
public static Queue<Integer> reverseQueue(Queue<Integer> queue) {
if (queue == null || queue.isEmpty()) {
return queue;
}
Stack<Integer> stack = new Stack<>();
while (!queue.isEmpty()) {

stack.push(queue.poll());
}

while (!stack.isEmpty()) {
queue.offer(stack.pop());
}

// TODO: Implement this method

return null;
return queue;
}

/*
Expand All @@ -117,10 +173,30 @@ public static Queue<Integer> reverseQueue(Queue<Integer> queue) {
Output: false
*/
public static boolean isBalanced(String expression) {
if (expression == null || expression.isEmpty()) {
return true;
}

Stack<Character> stack = new Stack<>();
for (char c : expression.toCharArray()) {
if (c == '(' || c == '{' || c == ']') {
stack.push(c);
} else if (c == ')' || c == '}' || c == ']') {
if (stack.isEmpty()) {
return false;

}
char top = stack.pop();
if ((c == ')' && top != '(') || (c == '}' && top != '{') || (c == ']' &&
top != ']')) {
return false;
}
}
}

// TODO: Implement this method

return false;
return stack.isEmpty();
}

/*
Expand All @@ -133,9 +209,32 @@ public static boolean isBalanced(String expression) {
*/
public static Integer mostFrequent(List<Integer> numbers) {

Map<Integer, Integer> frequecyMap = new HashMap<>();
for (Integer number : numbers) {

frequecyMap.put(number, frequecyMap.getOrDefault(number, 0) + 1);

}

int mostFrequentNumber = 0;
int maxFrequency = 0;
boolean first = true;
for (Map.Entry<Integer, Integer> entry : frequecyMap.entrySet()) {
if (first) {
mostFrequentNumber = entry.getKey();
maxFrequency = entry.getValue();
first = false;
} else if (entry.getValue() > maxFrequency) {
mostFrequentNumber = entry.getKey();
maxFrequency = entry.getValue();

}
}


// TODO: Implement this method

return null;
return mostFrequentNumber;
}

/*
Expand All @@ -152,10 +251,20 @@ public static Integer mostFrequent(List<Integer> numbers) {
}
*/
public static Map<Integer, List<String>> groupByLength(List<String> words) {
Map<Integer, List<String>> lengthMap = new HashMap<>();

for (String word : words) {
int length = word.length();
if (!lengthMap.containsKey(length)) {
lengthMap.put(length, new ArrayList<>());
}

lengthMap.get(length).add(word);
}

// TODO: Implement this method

return null;
return lengthMap;
}

/*
Expand All @@ -170,9 +279,24 @@ public static Map<Integer, List<String>> groupByLength(List<String> words) {
*/
public static int maxSlidingWindowSum(List<Integer> numbers, int k) {

int max_sum = Integer.MIN_VALUE;
int current_window_sum = 0;

for (int i = 0; i < k; i++) {
current_window_sum += numbers.get(i);
}
max_sum = current_window_sum;

for (int i = k; i < numbers.size(); i++) {
current_window_sum += numbers.get(i) - numbers.get(i - k);

max_sum = Math.max(max_sum, current_window_sum);
}


// TODO: Implement this method

return 0;
return max_sum;
}
}
}

45 changes: 38 additions & 7 deletions src/main/java/Iterable/Practice/IterableWarmups.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package Iterable.Practice;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class IterableWarmups {
Expand All @@ -27,6 +28,10 @@ public static void main(String[] args) {
public static int sum(Iterable<Integer> numbers) {

int total = 0;
Iterator<Integer> iterator = numbers.iterator();
while (iterator.hasNext()) {
total += iterator.next();
}

// TODO:
// Use a for-each loop to calculate the sum
Expand All @@ -43,6 +48,14 @@ public static int countEven(Iterable<Integer> numbers) {

int count = 0;

Iterator<Integer> iterator = numbers.iterator();
while (iterator.hasNext()) {
int number = iterator.next();
if (number % 2 == 0) {
count++;
}
}

// TODO:
// Loop through numbers
// Increment count if number is even
Expand All @@ -58,6 +71,13 @@ public static int countEven(Iterable<Integer> numbers) {
public static int findMax(Iterable<Integer> numbers) {

int max = Integer.MIN_VALUE;
Iterator<Integer> iterator = numbers.iterator();
while (iterator.hasNext()) {
int number = iterator.next();
if (number > max) {
max = number;
}
}

// TODO:
// Loop through numbers
Expand All @@ -75,10 +95,21 @@ public static int countMatches(Iterable<String> words, String target) {

int count = 0;

// TODO:
// Loop through words
// Compare each word to target

return count;
}
}
if (target == null) {
return 0;
}
Iterator<String> iterator = words.iterator();
while (iterator.hasNext()) {
String word = iterator.next();
if (target.equals(word)) {
count++;
}

}
// TODO:
// Loop through words
// Compare each word to target

return count;
}
}
Loading