int maxsubarray(int a, int size) else if (sum < 0)
}return max;
}接下來我給出幾個時間複雜度不同的c++演算法,僅供參考。
int maxsubsum(const vector& a)
} return maxsum;
}
可以看到此處用到了c++中的vector類,使用了for的兩重迴圈,時間複雜度為o(n*n)。
接下來給出乙個時間複雜度為o(n)的好演算法,與c語言編寫的相似。
int maxsubsum(const vector& a)
return maxsum;
}
求子陣列的最大和 微軟面試100題 第三題
題目要求 輸入乙個整型陣列,陣列裡有整數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有個乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 例如 輸入的陣列為1,2,3,10,4,7,2,5,和最大的子陣列為3,10,4,7,2,因此輸出為該子陣列的和18。參考資料 劍指o...
微軟面試100題
41.求固晶機的晶元查詢程式 晶元盤由數目不詳的大小一樣的晶元組成,晶元並不一定全布滿晶元盤,照相機每次這能匹配乙個晶元,如匹配過,則拾取該晶元,若匹配不過,照相機則按測好的晶元間距移到下乙個位置。求遍歷晶元盤的演算法 求思路。兩個非降序鍊錶的並集,1 2 3 和 2 3 5 並為 1 2 3 5 ...
微軟面試100題之第6題
給你10分鐘時間,根據上排給出十個數,在其下排填出對應的十個數 要求下排每個數都是先前上排那十個數在下排出現的次數。上排的十個數如下 0,1,2,3,4,5,6,7,8,9 舉乙個例子,數值 0,1,2,3,4,5,6,7,8,9 分配 6,2,1,0,0,0,1,0,0,0 0在下排出現了6次,1...