3 ms·
regarding your python code: do you know about 'enumerate'? It returns an iterable of (index, value) pairs of a sequence. :)
by lincolnq 17y ago
regarding your python code: do you know about 'enumerate'? It returns an iterable of (index, value) pairs of a sequence. :)
- almost 17y agoenumerate is very useful, here's mine: def equi ( A ): right = sum(A) left = 0 for i,x in enumerate(A): right -= x if right == left: return i left += x return -1 What's interesting is that all the versions I've seen so far are pretty much identical apart from very minor things. This would seem to me to be obviously the correct way to do it but I'm interested if it's just a way. Did anyone solve this in a different way of equal or greater elegance?
- anc2020 17y agoMine kept one cumulative list adding left to right and another summing right to left. This is conventionally slower, but conceivably faster if you do it in parallel, leaving the final loop to be something like: for i in xrange(len(A)): if right[i] == left[i]: return i The final loop here is slightly tighter, so as long as your parallelism didn't add big overheads, this will be faster. Original: http://pastebin.com/m6e742f56 http://pastebin.com/m6e742f56 Parallelised: http://pastebin.com/m32a60b1 http://pastebin.com/m32a60b1
- moconnor 17y ago+1! Thanks for the reminder. I'm fairly new to python and couldn't remember the keyword. I guess this is a reasonable argument for the time deadline - to get it done quickly I didn't look it up, instead doing the simplest thing I knew would work and thus exposing the pitiful state of my python experience :-)