Új hozzászólás Aktív témák

  • axioma

    veterán

    válasz cadtamas #1212 üzenetére

    Ez az amikor jol megszivod azzal, hogy az ints ertekein ugy mesz vegig, hogy "elveszted" az indexet, es mikor ujra lekerdezed, akkor tok jol emeled a nagyordodat feleslegesen. Mert az index kikeresese nem konstans ideju muvelet - es ez a muvelet eleve 2x is szerepel benne.

    A tobbi reszet nem nezve elsore csak a feleslegeset kiveve:
    for x in xrange(len(ints)-1):
    pair1=ints[x]
    pair2=s-pair1
    x=ints.index(pair1)
    try:
    y=ints[x+1:].index(pair2)+i

    egybol nem kell az x!=y sem (mert x+1.-tol keresed csak)

    Ja egyebkent latom, hogy vegulis az i-t is arra hasznaltad, hogy tudd hogy hol jarsz, de ket dolog miatt nem vetted eszre:
    1. elnevezes (pl. fst_idx eseten egybol latszana)
    2. bar a try teljes lefutasa es exception eseten is noveled, de kulonvetted - az egesz utan ha 1x lenne, latszana, hogy pont szamolod a koroket

    Mar csak didaktikailag probald ki. De egyebkent nagyon nem ertem, miert is gyujtogetsz lehetseges indexeket... eleg a legelso. Ha jol ertem, az eloszor befejezodo kell. Tehat en igy mennek vegig rajta:

    prevs=set(ints[:1])
    for val in ints[1:]:
    if s-val in prevs:
    return [s-val,val]
    prevs.add(val)
    return None

    disclaimer: nem probaltam ki...

Új hozzászólás Aktív témák