最近寫到的OA題目, 可是有testcase超時, 不知道有沒有人有啥想法
題目:
有一個array, 你要找出所有不同subarray的數量, 每個sub arrays最多包含k個奇數數字.
範例 1:
array = [1, 2, 3, 4] & k = 1
總個會有[1], [2], [3], [4], [1, 2], [2, 3], [3, 4], [2, 3, 4]這八種, 要return 8
範例 2:
array = [1, 1, 2, 3] & k = 2
會有[1], [1, 1], [1, 1, 2], [1, 2], [2], [2, 3], [3], [1, 2, 3], 要return 8種
p.s
array不是sorted的
array的size在1~n之間
我的解法是暴力解O(n^2),可是有些testcase會超時, 不知道有沒有O(n)還是O(nlogn)解法的
更新1:
要求是distinct subarray, 所以範例2 會有兩個array [1], [1], 這樣算一組
更新2:
範例2有錯更新一下
作者: a159a 2018-09-02 11:27:00
第二個為例,數學模型應該是(x^0+x^1+x^2)(x^0+x^1)(x^0+x^1)的係數和,但因為條件是奇數,所以要先算出一三個括弧x次方小於k的係數和,那只需要做一些多項式運算,不知道這樣的方法有沒有比較快?