2014-12-30 86 views
-3

什麼是最大數組,按照與給定數組相反的順序排序?最大的數組,按照與給定數組相反的順序排列

Input: [25,28,11,10,9, 8,17, 23,20,19,14] 

Output:[[28,11,10,9,8],[23,20,19,14]] 

我試過谷歌,但沒有找到任何解決方案請幫我解決這個問題。這裏是我正在編寫的代碼,但沒有清楚。

def findRuns(L): 
    result = [] 
    start = 0 
    n = L[start] 
    for i,num in enumerate(L): 
     if num <= n: 
      n = num 
     else: 
      answer.append(L[start:1]) 
      start = i 
      n = L[i] 
    result.append(L[start]) 
    return result 

請幫我解決這個問題。提前致謝。

+0

所以,你試圖做到這一點在Python ,Ruby還是C? –

+0

第二個輸入的輸出看起來不正確。這是你的代碼的輸出,還是預期的輸出? – inspectorG4dget

+0

任何編程,但喜歡python bcs我使用python來解決這個問題。 –

回答

1
def findRuns(L): 
    answer = [] 
    start = 0 
    n = L[start] 
    for i,num in enumerate(L[1:],1): 
     if num <= n: 
      n = num 
     else: 
      answer.append(L[start:i]) 
      start = i 
      n = L[start] 
    answer.append(L[start:]) 
    return answer 

輸出:

In [48]: findRuns([25,28,11,10,9, 8, 23]) 
Out[48]: [[25], [28, 11, 10, 9, 8], [23]] 

In [49]: findRuns([25,28,11,10,9, 8,17, 23,20,19,14]) 
Out[49]: [[25], [28, 11, 10, 9, 8], [17], [23, 20, 19, 14]] 
+0

Thanks @ inspectorG4dget,這個工作適合我。 –

1

您可以編寫一個函數的石斑魚,然後找到使用max()基於長度最大的組:

def grouper(seq): 
    it = iter(seq) 
    grp = [next(it)] 
    for item in it: 
     if item <= grp[-1]: 
      grp.append(item) 
     else: 
      yield grp 
      grp = [item] 
    if grp: 
     yield grp 

inp1 = [25,28,11,10,9, 8, 23] 
inp2 = [25,28,11,10,9, 8,17, 23,20,19,14] 

print max(grouper(inp1), key=len) 
#[28, 11, 10, 9, 8] 
print max(grouper(inp2), key=len) 
#[28, 11, 10, 9, 8] 
print list(grouper(inp2)) 
#[[25], [28, 11, 10, 9, 8], [17], [23, 20, 19, 14]]