Wpis z mikrobloga

Mirki, robie sobie zadanka na #leetcode

I #cpp mi przechodzi:

class Solution {
public:
int maxProfit(const vector& prices) {
int best = 0;
for (ushort i = 0; i < prices.size(); ++i) {
for(ushort j = i + 1; j < prices.size(); ++j){
if(prices[j] - prices[i] > best) {
best = prices[j] - prices[i];
}
}
}
return best;
}
};

a #python nie:

class Solution:
def maxProfit(self, prices: List[int]) -> int:
best = 0
for i, _ in enumerate(prices[:-1]):
for j, _ in enumerate(prices[i:]):
p = prices[j+i] - prices[i]
if p > best:
best = p
return best

i tak sie zastanawiam, czym sie semantycznie roznia od siebie?
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

via Wykop Mobilny (Android)
  • 0
@bohater: nie mam 3 petli, bo jak do max przekazesz generator expression, to on nie materializuje listy, zeby po niej iterowac. Przed pustym inputem latwo sie zabezpieczyc dodajac default=0 do max.

Ale mniejsza o to - zarowno twoj kod jak i moj (z tymi poprawkami) wyklada sie na jednym tescie - duzej liscie posortowanej malejaco. Jest timeout. Kod dziala, tylko jest wolny, wiec trzeba wymyslic jakies optymalizacje ¯\_(ツ)_/¯ To
  • Odpowiedz