diff --git a/src/Main.java b/src/Main.java index 036c766..a5b15c9 100644 --- a/src/Main.java +++ b/src/Main.java @@ -5,8 +5,9 @@ public class Main { - // The time complexity is: - // YOUR ANSWER HERE + // The time complexity is: + // YOUR ANSWER HERE + // O(x^2) because there are two nested loops that each run x time. public static void timesTable(int x) { for(int i = 1; i <= x; i++) { for(int j = 1; j <= x; j++) { @@ -18,6 +19,7 @@ public static void timesTable(int x) { // The time complexity is: // YOUR ANSWER HERE + // O(n) because we loop through each letter in the word once. where n is the length of the word in letters array. public static void printLetters(String word) { char[] letters = word.toCharArray(); @@ -28,12 +30,13 @@ public static void printLetters(String word) { // The time complexity is: // YOUR ANSWER HERE + // 0(n) where n is the number of bannedPassword public static boolean isBanned(String password) { String[] bannedPasswords = {"password", "hello", "qwerty"}; boolean banned = false; for(String bannedPassword : bannedPasswords) { if(password.equals(bannedPassword)) { - banned = true; + banned = true; // O(1) } } return banned; @@ -42,6 +45,7 @@ public static boolean isBanned(String password) { // The time complexity is: // YOUR ANSWER HERE + // 0(n) where n is the num of elements in the nums array public static int computeProduct(int[] nums) { int total = 1; for(int num : nums) { @@ -52,6 +56,7 @@ public static int computeProduct(int[] nums) { // The time complexity is: // YOUR ANSWER HERE + // O(n) where n is the lngth of the nums array public static void describeProduct(int[] nums) { System.out.println("About to compute the product of the array..."); int product = computeProduct(nums); @@ -61,6 +66,7 @@ public static void describeProduct(int[] nums) { // The time complexity is: // YOUR ANSWER HERE + // o(n) where n is value of n and we use in for loop public static int computeFactorial(int n) { int result = 1; for(int i = 1; i <= n; i++) { @@ -71,6 +77,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) where n is the legnth of the nums array. public static void computeAllFactorials(int[] nums) { for(int num : nums) { int result = computeFactorial(num); @@ -81,7 +88,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) where n is the number of element in arr -> until target is found or done w arr length public static void checkIfContainedArrayList(ArrayList arr, String target) { if (arr.contains(target)) { System.out.println(target + " is present in the list"); @@ -94,7 +101,7 @@ public static void checkIfContainedArrayList(ArrayList 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) where n is num of elem in wordsA and wordsB and wordsA = wordsB public static boolean containsOverlap(String[] wordsA, String[] wordsB) { for(String wordA : wordsA) { for(String wordB : wordsB) { @@ -108,7 +115,8 @@ 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) where n is worldsA.length and wordB.length. + // asumme that wordsA.length = wordsB.length like the last one. public static boolean containsOverlap2(String[] wordsA, String[] wordsB) { Set wordsSet = new HashSet<>(); for(String word : wordsA) { @@ -125,7 +133,7 @@ public static boolean containsOverlap2(String[] wordsA, String[] wordsB) { } // The time complexity is: - // YOUR ANSWER HERE + // O(n) where n is chars,length public static void printCharacters(char[] chars) { for (int i = 0; i < chars.length; i++) { char character = chars[i]; @@ -133,14 +141,14 @@ public static void printCharacters(char[] chars) { } } // 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) -> call once and set.contains public static void checkIfContainedHashSet(HashSet set, String target) { if (set.contains(target)) { @@ -156,7 +164,7 @@ public static void checkIfContainedHashSet(HashSet 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) where n = names.length public static String emailLookup(String[] names, String[] emails, String queryName) { for(int i = 0; i < names.length; i++) { if (names[i].equals(queryName)) { @@ -172,7 +180,7 @@ 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(1) we can use the query for HashMap public static String emailLookupEfficient(HashMap namesToEmails, String queryName) { return null; } @@ -180,7 +188,7 @@ public static String emailLookupEfficient(HashMap namesToEmails, // 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) where n is worldList and wordSet size public static boolean hasCommon(HashSet wordSet, ArrayList wordList) { for(String word : wordSet) { if(wordList.contains(word)) { @@ -193,8 +201,13 @@ public static boolean hasCommon(HashSet wordSet, ArrayList 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) where n is wordList size so we down from O(n^2) to O(n) public static boolean hasCommonEfficient(HashSet wordSet, ArrayList wordList) { + for (String word : wordList) { + if (wordSet.contains(word)) { + return true; + } + } return false; } @@ -203,14 +216,16 @@ public static boolean hasCommonEfficient(HashSet wordSet, ArrayList Ticker symboys + // values -> current price of each stock // 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 + // Array List to use so you can access by position array index or add songs where you want in the length. // 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, @@ -218,5 +233,5 @@ public static boolean hasCommonEfficient(HashSet wordSet, ArrayList