上岸 I 北美大廠12月第四周算法面試真題匯總

2021-03-02 北美上岸君

上岸算法

任何只教知識的課程都是耍流氓

我們直擊上岸

關注我們,第一時間獲得大廠面試真題講解

應廣大同學們的需求,我們將定期整理各大廠最新的面試題題解,由我們【上岸算法】資深的老師給大家進行分析講解,幫助大家實時掌握最新的面試動態,早日上岸!

Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.

Follow up: If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.

Example 1 :

Input: nums = [-2,1,-3,4,-1,2,1,-5,4]Explanation: [4,-1,2,1] has the largest sum = 6.

題解:


動態規劃方法:判斷以第 i - 1 個元素結尾的子序列的最大值能不能給當前第 i 個元素結尾的序列提供增益,即dp[i - 1] > 0 ,dp[i] = dp[i - 1] + nums[i]。

參考代碼

class Solution {
    public int maxSubArray(int[] nums) {
        if (nums == null) {
            return 0;
        }
        int max = nums[0];    // 全局最大值
        int subMax = nums[0];  // 前一個子組合的最大值,狀態壓縮
        for (int i = 1; i < nums.length; i++) {
            if (subMax > 0) {
                // 前一個子組合最大值大於0,正增益
                subMax = subMax + nums[i];
            } else {
                // 前一個子組合最大值小於0,拋棄前面的結果
                subMax = nums[i];
            }
            // 計算全局最大值
            max = Math.max(max, subMax);
        }
        return max;
    }
}

題目描述:Maximum Product of Word Lengths

Given a string array words, find the maximum value of length(word[i]) * length(word[j]) where the two words do not share common letters. You may assume that each word will contain only lower case letters. If no such two words exist, return 0.

Example 1 :

Input: ["abcw","baz","foo","bar","xtfn","abcdef"]Explanation: The two words can be "abcw", "xtfn".

Example 2 :

Input: ["a","ab","abc","d","cd","bcd","abcd"]Explanation: The two words can be "ab", "cd".

題解:


用二進位的一位表示某一個字母是否出現過,0表示沒出現,1表示出現。當兩個字符串沒有相同的字母時,二進位數與的結果為0。

參考代碼

class Solution {
    public int maxProduct(String[] words) {
        int wlength = words.length;
        int[] arr = new int[wlength];
        for(int i = 0; i < wlength; ++i){
            int length = words[i].length();
            for(int j = 0; j < length; ++j){
                arr[i] |= 1 << (words[i].charAt(j) - 'a');
            }
        }
        int ans = 0;
        for(int i = 0; i < wlength; ++i){
            for(int j = i + 1; j < wlength; ++j){
                if((arr[i] & arr[j]) == 0){
                    int k = words[i].length() * words[j].length();
                    ans = ans < k ? k : ans;
                }
            }
        }
        return ans;
    }
}

題目描述Longest Consecutive Sequence


Given an unsorted array of integers nums, return the length of the longest consecutive elements sequence.

Follow up: Could you implement the O(n) solution? 

Example 1:

Input: nums = [100,4,200,1,3,2]Explanation: The longest consecutive elements sequence is [1, 2, 3, 4]. Therefore its length is 4.

Example 2:

Input: nums = [0,3,7,2,5,8,4,6,0,1]

題解:


先找出最大最小值,創建長度為 max-min+1的輔助空間,將原數組的元素映射到[0,max-min]區間,順序統計該區間最長連續子序列。

參考代碼


class Solution {
    public int longestConsecutive(int[] nums) {
        if (nums == null || nums.length == 0){
            return 0;
        }
        //先找出最大最小值
        int min = nums[0],max = nums[0];
        for (int e:nums){
            max = Math.max(max, e);
            min = Math.min(min, e);
        }
        //將nums中的每個數字映射到 [0,max-min]
        boolean[] arr = new boolean[max-min+1];
        for (int e:nums){
            arr[e-min] = true;
        }
        //一次遍歷
        int cnt = 0,res = 0;
        for (int i = 0; i < arr.length; i++){
            if (arr[i]){
                cnt++;
            }else{
                res = Math.max(cnt, res);
                cnt = 0;
            }
        }
        res = Math.max(cnt, res);
        return res;
    }
}


題目描述:Alien Dictionary


There is a new alien language which uses the latin alphabet. However, the order among letters are unknown to you. You receive a list of non-empty words from the dictionary, where words are sorted lexicographically by the rules of this new language. Derive the order of letters in this language.

Example 1:

Example 2:

"zx"

題解:

先由輸入構造出一張有向圖,圖的節點是字符,邊指示字符順序。考察相鄰兩字符串的每個字符來構造全圖。假設當前考察的字符是c1, c2(c1是前面單詞某位置的字符,c2是後面單詞同位置處的字符),若c1和c2不等,則在圖中加入一條c1指向c2的邊。 

然後進行拓撲排序,並記錄拓撲排序依次遍歷到的字符,若排序後所得字符和圖中節點數一致說明該圖無圈,也即給定的字典合法,拓撲排序所得結果即為字典規則。 

參考代碼

public class Solution {
    public String alienOrder(String[] words) {
        if (words == null || words.length == 0) 
            return "";
        if (words.length == 1)
            return words[0];
        Map<Character, Set<Character>> graph = buildGraph(words);
        Map<Character, Integer> indegree = computeIndegree(graph);
        StringBuilder order = new StringBuilder();
        LinkedList<Character> queue = new LinkedList<Character>();
        for (Character c : indegree.keySet()) {
            if (indegree.get(c) == 0)
                queue.offer(c);
        }
        while (!queue.isEmpty()) {
            char c = queue.poll();
            order.append(c);
            for (Character adj : graph.get(c)) {
                if (indegree.get(adj) - 1 == 0)
                    queue.offer(adj);
                else
                    indegree.put(adj, indegree.get(adj) - 1);
            }
        }
        return order.length() == indegree.size() ? order.toString() : "";
    }
    public Map<Character, Set<Character>> buildGraph(String[] words) {
        Map<Character, Set<Character>> map = new HashMap<Character, Set<Character>>();
        int N = words.length;
        for (int i = 1; i < N; i++) {
            String word1 = words[i - 1];
            String word2 = words[i];
            int len1 = word1.length(), len2 = word2.length(), maxLen = Math.max(len1, len2);
            boolean found = false;
            for (int j = 0; j < maxLen; j++) {
                char c1 = j < len1 ? word1.charAt(j) : ' ';
                char c2 = j < len2 ? word2.charAt(j) : ' ';
                if (c1 != ' ' && !map.containsKey(c1)) 
                    map.put(c1, new HashSet<Character>());
                if (c2 != ' ' && !map.containsKey(c2))
                    map.put(c2, new HashSet<Character>());
                if (c1 != ' ' && c2 != ' ' && c1 != c2 && !found) {
                    map.get(c1).add(c2);
                    found = true;
                }
            }
        }
        return map;
    }
    public Map<Character, Integer> computeIndegree(Map<Character, Set<Character>> graph) {
        Map<Character, Integer> indegree = new HashMap<Character, Integer>();
        for (Character prev : graph.keySet()) {
            if (!indegree.containsKey(prev))
                indegree.put(prev, 0);
            for (Character succ : graph.get(prev)) {
                if (!indegree.containsKey(succ))
                    indegree.put(succ, 1);
                else
                    indegree.put(succ, indegree.get(succ) + 1); 
            }
        }
        return indegree;
    }
}

相關焦點

  • 上岸 I 北美大廠10月第四周算法面試真題匯總
    上岸算法死磕100%上岸率的精品小班課關注我們,第一時間獲得大廠面試真題講解應廣大同學們的需求,我們將定期整理各大廠最新的面試題題解,由我們【上岸算法】資深的老師給大家進行分析講解,幫助大家實時掌握最新的面試動態,早日上岸!
  • 上岸 I 北美10月第四周算法面試真題匯總
    上岸算法死磕100%上岸率的精品小班課關注我們,第一時間獲得大廠面試真題講解應廣大同學們的需求,我們將定期整理各大廠最新的面試題題解,由我們【上岸算法】資深的老師給大家進行分析講解,幫助大家實時掌握最新的面試動態,早日上岸!
  • 上岸 I 北美大廠1月第二周算法面試真題匯總
    上岸算法任何只教知識的課程都是耍流氓我們直擊上岸關注我們,第一時間獲得大廠面試真題講解應廣大同學們的需求,我們將定期整理各大廠最新的面試題題解,由我們【上岸算法】資深的老師給大家進行分析講解,幫助大家實時掌握最新的面試動態
  • 上岸 I 北美大廠2月第二周算法面試真題匯總
    上岸算法任何只教知識的課程都是耍流氓我們直擊上岸關注我們,第一時間獲得大廠面試真題講解應廣大同學們的需求,我們將定期整理各大廠最新的面試題題解,由我們【上岸算法】資深的老師給大家進行分析講解,幫助大家實時掌握最新的面試動態
  • 上岸 I 北美大廠11月第三周算法面試真題匯總
    上岸算法死磕100%上岸率的精品小班課關注我們,第一時間獲得大廠面試真題講解應廣大同學們的需求,我們將定期整理各大廠最新的面試題題解,由我們【上岸算法】資深的老師給大家進行分析講解,幫助大家實時掌握最新的面試動態,早日上岸!
  • 上岸 I 北美8月第三周算法面試真題匯總
    上岸算法死磕100%上岸率的精品小班課關注我們,第一時間獲得大廠面試真題講解應廣大同學們的需求,我們將定期整理各大廠最新的面試題題解,由我們【上岸算法】資深的老師給大家進行分析講解,幫助大家實時掌握最新的面試動態,早日上岸!
  • 上岸 I 秋招衝刺,最近拿到offer的同學都說它活少錢
    即使是無基礎的小白,也能在一個月內迅速提升ds崗的面試技能,幫助你迅速成長為符合一線大廠招聘標準的大數據人才。機器學習(mle)方向美西時間  2020/16 7-9PM   正式直播疫情之下,找工上岸困難上岸算法願意給北美同學提供由擁有5年以上北美
  • 本科學歷進大廠是痴心妄想?——微軟上岸經驗分享
    這都要感謝Justin導師的算法課和後來的光流算法項目。分享一下自己的經歷吧。我大學的時候其實一直蠻糾結的,沒想過畢業以後就能直接進大廠。從大二開始,基本舍友們就開始忙碌了,每天討論以後想去的公司,要不然就開始選學校籌備申研。那時候大家還探討過能不能進大廠這個問題,但我們一致認為競爭太大了,沒有研究生學歷很難進去。想進大廠難,讀研也很難,所以我陷入了深深的糾結。
  • 字節面試也考原題,難度堪比FB
    據已上岸學員爆料,北美字節的多個業務部門都在擴招,可以內推!崗位雖多但競爭激烈,建議大家投遞從速,畢竟越早投機會越大!從之前的多位學員面經來看,字節的面試風格通常都是這樣的👇全職3輪面試,實習2~3輪面試每輪2道算法,難度與FB接近基本都是高頻題,容易碰原題所以,如果想要短期衝刺上岸字節的話,我們應該重點備戰高頻題
  • 這套1307頁的阿里、騰訊等大廠Android面試真題解析火了!
    下面的題目是一個大牛花了很長時間整理的群友在面試阿里、騰訊等網際網路大廠被問到的面試真題和答案解析,如果大家還有其他好的題目或者好的見解歡迎分享。接下來我們看看一線大廠Android中高級面試展開的完整面試題
  • 大廠奇葩OA:不考算法考數學,5~6輪花樣多
    大廠的OA和面試雖難,但也不是無跡可尋,畢竟題庫更新的速度遠遠比不過面試的速度。尤其是亞馬遜,每年都有上萬人應試,題庫早已被摸得透透的了。為了提高面試的門檻,亞麻會在每輪OA和onsite裡加上自己的Behavior Question(BQ),形成了亞馬遜面試的特色。Amazon通常會發三輪OA,其中都包含了BQ。而且基本會圍繞著著名的14 Leadership Principles來展開。此外,OA也考算法,有時還會讓你debug和做邏輯題。
  • 高階測試 · 大廠面試 · 真題題解(7)
    有測友去某知名大廠面試了,遭遇了幾道編程題,帶回來分享給大家研究學習!11.#1、窮盡暴力破解def SearchTarget(lst,t): result = [] lst_len = len(lst) for i in range(lst_len): for j in range(i+1,lst_len): if (lst[i]+lst[j
  • 被follow up轟炸暈,我要如何從面試「衰神」逆襲成碼神?
    雖然今年北美招聘受疫情衝擊很大,一些科技公司還是不同程度加大了招人力度,像臉書一擴招就1w。大廠招人需求不減,但僧多粥少,bar還是升了。不少人工作多年沒刷題,算法也丟的差不多了,結果今年突遭layoff,被迫面試直呼:太難了!!
  • 上岸 I Netflix創始人:在家工作(WFH)一無是處
    上岸算法死磕100%上岸率的精品小班課關注我們,第一時間獲得大廠面試真題講解近日
  • 谷歌關閉headcount、Airbnb停招new grad,今年進不去大廠了?
    我們總結了最近矽谷各大公司的招聘情況,希望能給還未上岸的同學一些參考。LinkedIn/Amazon/Google求職大禮包LinkedIn/Amazon/Google面試真題匯總大廠薪資結構匯總          部分禮包展示,領取方式見文末(文末還有超大驚喜福利,先到先得哦~)
  • 想一個月搞定面試算法?來《九章算法班》!第一節免費試聽!
    想尋找北美software engineer職位的同學。想接受系統的面試算法培訓的同學,或想換工作的但是算法比較薄弱的工程師。0算法基礎即可參與學習。主講令狐衝老師,曾就職於超過2家矽谷頂尖IT企業,  北美和國內頂尖IT企業offer數10+,面試人數超過200人。課程大綱由易到難。只要你會任何一門計算機語言即可參加。尤其適合算法基礎相對薄弱的 or 轉專業的 or 想跳槽卻太久沒刷題的同學。
  • 刷算法刷到頭禿,才知道:這些題不考!
    這是該問題的最優解法,卻絕不是面試官想聽到的答案為什麼?因為他自己也不會!開個玩笑,這裡科普一個冷知識:帶人名的算法都不在面試考察範圍內。除了「閱讀全文並背誦」,這種算法考不出什麼東西。大廠面試考察目的,是看你的code寫的好不好,邏輯思維能力怎麼樣,而不是考你的背誦能力。
  • 面試算法實踐與國外大廠習題指南
    在線練習LeetCodeVirtual JudgeCareerCupHackerRankCodeFights在線面試編程Floyd-Warshall 算法Prim 算法Kruskal 算法視頻教程Data StructuresAlgorithms面試書籍Competitive Programming 3 -
  • 九章算法強化班 | 第一節免費試聽,提升算法面試技能!`
    月15日周四 22:00-24:00 北京時間 11月16日周五 11:00-13:00課程安排:每節2小時,共7節,第一節免費試聽。報名網址:http://t.cn/RAC7Era親愛的朋友們,根據2018年最新面試情況,《算法強化班》又進行了一次巨大的革新啦。同時《算法強化班》的ladder也添加了很多最新的面試真題哦!根據最近面試情況,以及《九章算法班》題型的調整,大幅度對課程內容進行了修改:1.
  • 國內外雅思託福口語筆試真題蹲點回憶匯總2021年2月3月4月5月6月7月8月9月10月11月12月
    月23日24日25日-12月26日-12月31日國內外最新口語真題蹲點圖片匯總或ieltsglobal 2020年12月12日加拿大,美國等北美考區雅思A類、G類真題回憶匯總(聽說讀寫答案+機經整理匯總)請進入http://bbs.ieltstofelglobal.com/thread-251704-1-1.html