1. 程式人生 > >2019拼多多提前批筆試題(演算法崗)

2019拼多多提前批筆試題(演算法崗)

一共四道程式設計題:

第一題 :給一個數組,求最長的山谷。

例:[1, 2, 5, 3, 2, 3, 4,1]

最長的山谷是 5 3 2 3 4,長度是5.

本題類似於lettcode 845,求最長山峰。

trick:筆試的輸入很坑,沒有給定輸入長度,導致輸入處理很麻煩,導致程式出錯。

求山峰的程式碼:

class Solution {
    public int longestMountain(int[] A) {
        int cnt = 0;
        int l, r;
        for(int i = 1; i < A.length-1; i++){
            if(A[i-1] < A[i] && A[i] > A[i+1]){
                l = i-1;
                r = i+1;
                while(l >= 1 && A[l]>A[l-1]) l--;
                while(r < A.length-1 && A[r]>A[r+1]) r++;
                cnt = Math.max(cnt, r-l+1);
            }
        }
        return cnt;
    }
}

第二、三、四題見下一篇部落格。