記得截圖沒過的test case啊!否則連復習改bug的證據都沒了啊!!!
其實也不一定非得要拿面試來測試,做做lc的contest,看看自己哪里不會,也是一樣的效果。
注意是單選題還是多選題
hashmap單詞查重:實在是簡單啊,為啥就只過了一半?
= 1 和 2 的情況都會取出來。本來想給map寫remove的,忘了怎么寫了。唉。
// Complete the missingWords function below. static List<String> missingWords(String s, String t) { //initialization HashMap<String, Integer> map = new HashMap<String, Integer>(); //HashSet<String> set = new HashSet<String>(); List<String> result = new ArrayList<String>(); String[] s_words = s.split("\\s+"); String[] t_words = t.split("\\s+"); //add s for (int i = 0; i < s_words.length; i++) { map.put(s_words[i], 1); } //add t for (int j = 0; j < t_words.length; j++) { map.put(t_words[j], map.get(t_words[j]) + 1); } //return for (int i = 0; i < s_words.length; i++) { if (map.get(s_words[i]) == 1) { result.add(s_words[i]); } } return result; }
小孩跑步:實在是簡單啊,為啥就只過了1/4?
class Result { /* * Complete the 'getMostVisited' function below. * * The function is expected to return an INTEGER. * The function accepts following parameters: * 1. INTEGER n * 2. INTEGER_ARRAY sprints */ public static int getMostVisited(int n, List<Integer> sprints) { // Write your code here //initialization int[] count_steps = new int[n]; Arrays.fill(count_steps, 0); //for loop for (int pos = 0; pos < sprints.size() - 1; pos++) { //smaller or bigger if (sprints.get(pos) < sprints.get(pos + 1)) { for (int i = sprints.get(pos); i < sprints.get(pos + 1); i++) { count_steps[i]++; } }else { for (int i = sprints.get(pos + 1); i < sprints.get(pos); i++) { count_steps[i]++; } } } //get max int max = count_steps[0]; int index = 0; for (int i = 0; i < n; i++) { if (count_steps[i] > max) { max = count_steps[i]; index = i; } } //return return index; } }
給錢多的人賣股票,返回沒買到股票的交易id。完全沒思路,我ri。
就是先sort出價,再sort時間戳,可惜我tm連怎么給list 排序都不會寫……是用heap么?先復習這里,然后順便想想吧。
寫一個Comparator<Object>,然后強制轉換為比較數組。
package labs; import java.util.*; public class Example1 { public static void sort(int[][] ob, final int[] order) { Arrays.sort(ob, new Comparator<Object>() { public int compare(Object o1, Object o2) { int[] one = (int[]) o1; int[] two = (int[]) o2; for (int i = 0; i < order.length; i++) { int k = order[i]; if (one[k] > two[k]) { return 1; } else if (one[k] < two[k]) { return -1; } else { continue; //如果按一條件比較結果相等,就使用第二個條件進行比較。 } } return 0; } }); } public static void main(String[] args) { int array[][] = new int[][] { { 12, 34, 68, 32, 9, 12, 545 }, { 34, 72, 82, 57, 56, 0, 213 }, { 12, 34, 68, 32, 21, 945, 23 }, { 91, 10, 3, 2354, 73, 34, 18 }, { 12, 83, 189, 26, 27, 98, 33 }, { 47, 23, 889, 24, 899, 23, 657 }, { 12, 34, 68, 343, 878, 235, 768 }, { 12, 34, 98, 56, 78, 12, 546 }, { 26, 78, 2365, 78, 34, 256, 873 } }; sort(array, new int[] {0}); //先根據第一列比較,若相同則再比較第二列 for (int i = 0; i < array.length; i++) { for (int j = 0; j < array[i].length; j++) { System.out.print(array[i][j]); System.out.print("\t"); } System.out.println(); } } }
先把heap背一下吧!別的基礎數據結構,自己總結的那張紙,也要背。越熟練越好,貝多芬,只有腦子里的存貨,考試才可以直接拿來用啊!臨時查、臨時理解是來不及的。
措施:把cheetsheet和mmp里重要的東西趕緊復習一遍,不做題 光默寫都可以,腦子里多存點東西。有面試就趕緊面,沒有的話繼續刷題。方法是:限時,強迫自己寫暴力解 不能光是看了答案之后背出來,這樣測不出自己的水平。