Skip to content
55 changes: 34 additions & 21 deletions src/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
public class Main {

// The time complexity is:
// YOUR ANSWER HERE
// o(n^2)
public static void timesTable(int x) {
for(int i = 1; i <= x; i++) {
for(int j = 1; j <= x; j++) {
Expand All @@ -17,7 +17,7 @@ public static void timesTable(int x) {
}

// The time complexity is:
// YOUR ANSWER HERE
// o(n)
public static void printLetters(String word) {
char[] letters = word.toCharArray();

Expand All @@ -27,7 +27,7 @@ public static void printLetters(String word) {
}

// The time complexity is:
// YOUR ANSWER HERE
// o(n)
public static boolean isBanned(String password) {
String[] bannedPasswords = {"password", "hello", "qwerty"};
boolean banned = false;
Expand All @@ -41,7 +41,7 @@ public static boolean isBanned(String password) {


// The time complexity is:
// YOUR ANSWER HERE
// o(n)
public static int computeProduct(int[] nums) {
int total = 1;
for(int num : nums) {
Expand All @@ -51,7 +51,7 @@ public static int computeProduct(int[] nums) {
}

// The time complexity is:
// YOUR ANSWER HERE
// o(n)
public static void describeProduct(int[] nums) {
System.out.println("About to compute the product of the array...");
int product = computeProduct(nums);
Expand All @@ -60,7 +60,7 @@ public static void describeProduct(int[] nums) {


// The time complexity is:
// YOUR ANSWER HERE
// o(n)
public static int computeFactorial(int n) {
int result = 1;
for(int i = 1; i <= n; i++) {
Expand All @@ -71,6 +71,7 @@ public static int computeFactorial(int n) {

// Assume that the largest number is no bigger than the length
// of the array
//The time complexity is o(n^2)
public static void computeAllFactorials(int[] nums) {
for(int num : nums) {
int result = computeFactorial(num);
Expand All @@ -81,7 +82,7 @@ public static void computeAllFactorials(int[] nums) {

// assume that each String is bounded by a constant length
// The time complexity is:
// YOUR ANSWER HERE
// o(n)
public static void checkIfContainedArrayList(ArrayList<String> arr, String target) {
if (arr.contains(target)) {
System.out.println(target + " is present in the list");
Expand All @@ -94,7 +95,7 @@ public static void checkIfContainedArrayList(ArrayList<String> arr, String targe
// assume n = wordsA.length = wordsB.length
// assume that each String is bounded by a constant length
// The time complexity is:
// YOUR ANSWER HERE
// o(n^2)
public static boolean containsOverlap(String[] wordsA, String[] wordsB) {
for(String wordA : wordsA) {
for(String wordB : wordsB) {
Expand All @@ -108,7 +109,7 @@ public static boolean containsOverlap(String[] wordsA, String[] wordsB) {

// assume that each String is bounded by a constant length
// The time complexity is:
// YOUR ANSWER HERE
// o(n)
public static boolean containsOverlap2(String[] wordsA, String[] wordsB) {
Set<String> wordsSet = new HashSet<>();
for(String word : wordsA) {
Expand All @@ -125,22 +126,22 @@ public static boolean containsOverlap2(String[] wordsA, String[] wordsB) {
}

// The time complexity is:
// YOUR ANSWER HERE
// o(n)
public static void printCharacters(char[] chars) {
for (int i = 0; i < chars.length; i++) {
char character = chars[i];
System.out.println("The character at index " + i + " is " + character);
}
}
// The time complexity is:
// YOUR ANSWER HERE
// o(1)
public static double computeAverage(double a, double b) {
return (a + b) / 2.0;
}

// assume that each String is bounded by a constant length
// The time complexity is:
// YOUR ANSWER HERE
// o(1)
public static void checkIfContainedHashSet(HashSet<String> set, String target)
{
if (set.contains(target)) {
Expand All @@ -156,7 +157,7 @@ public static void checkIfContainedHashSet(HashSet<String> set, String target)
// Otherwise, it returns "Person not found"
// assume that each String is bounded by a constant length
// What is the time complexity of this method?
// YOUR ANSWER HERE
// o(n)
public static String emailLookup(String[] names, String[] emails, String queryName) {
for(int i = 0; i < names.length; i++) {
if (names[i].equals(queryName)) {
Expand All @@ -172,15 +173,20 @@ public static String emailLookup(String[] names, String[] emails, String queryNa
// Write this method to efficiently return the corresponding email or "Person not found" if appropriate
// assume that each String is bounded by a constant length
// What is the time complexity of your solution?
// YOUR ANSWER HERE
// o(n)
public static String emailLookupEfficient(HashMap<String, String> namesToEmails, String queryName) {
return null;
for(String name: namesToEmails.keySet()){
if(name.equals(queryName)){
return namesToEmails.get(name);
}
}
return "Person not found";
}

// What is the time complexity of this method?
// assume that each String is bounded by a constant length
// (assume the set and list have the same number of elements)
// YOUR ANSWER HERE
// o(n^2)
public static boolean hasCommon(HashSet<String> wordSet, ArrayList<String> wordList) {
for(String word : wordSet) {
if(wordList.contains(word)) {
Expand All @@ -193,30 +199,37 @@ public static boolean hasCommon(HashSet<String> wordSet, ArrayList<String> wordL
// Do not change the datatype of wordSet or wordList.
// assume that each String is bounded by a constant length
// What is the time complexity of your new solution?
// YOUR ANSWER HERE
// o(n)
public static boolean hasCommonEfficient(HashSet<String> wordSet, ArrayList<String> wordList) {

for(String word : wordList) {
if(wordSet.contains(word)) {
return true;
}
}
return false;
}
}


// Suppose you are building a dashboard that displays real-time stock prices.
// You want to keep track of the current price of each stock, with the stock's ticker symbol as the key.
// The prices will be updated frequently throughout the day, and you need to efficiently update
// and access the current price for each stock. The order of the ticker symbols is not important.
// What would be a good choice of data structure?
// YOUR ANSWER HERE
// HashMap

// Suppose you are building a music player application where users can create playlists.
// Songs can be added to the end of the playlist in the order the user chooses, and the user can
// skip to the next or previous song. Most operations involve adding songs and accessing them by
// their position in the playlist.
// What would be a good choice of data structure?
// YOUR ANSWER HERE
// ArrayList

// Suppose you are developing a search feature that keeps track of the user's
// recent search queries. You want to store the queries in the order they were made,
// so you can display them to the user for quick access. The number of recent searches is
// relatively small, and it is more important to preserve the order of the searches than
// to optimize for fast lookups or deletions.
// What would be a good choice of data structure?
// YOUR ANSWER HERE
// TreeSet
}