Hilo jibu la jamaa kajitahidi ila ni inefficient.
Inabidi ujue kitu, unavyokua unaandika software jitahidi kufikiria resources, yaani memory na cpu. Mfano, kwenye swali hapo umepewa array yenye objects laki moja, unatengeneza array nyingine unafanya copying almost all of the elements bila sababu, unaweza hisi labda zinaweza kua chache, lakini jiulize, mfano kama array yote uliyopewa ina two digit integers je? manake unakua umetoa copy ya 100,000 elements mara kibao, laki moja yaweza kua ndogo ila ukifanya hii kwenye computer mara kadhaa inafika muda unajikuta umetumia RAM kubwa mno bila sababu. Alafu unamaliza unaanza kucompare hizo array mpya ulizoweka, unajikuta umefanya pass kibao. Hilo swali likibadilishwa kidogo tu ukapewa a million objects utajikuta your code inarun twice or more times slower.
Sasa swali kama hilo hapo juu njia nzuri ni ipi?
Code:
1. def solution(A):
2. sum = 0
3. for i in A: //loops through all elements in array
4. x = abs(i) //returns a positive integer
5. if x>=10 and x<=99:
6. sum+=i
7. return sum
Notice code hapo inafanya only one pass, yaani for loop inarun from 0 to N element mara moja tu basi, hakuna kuloop tena na tena na hakuna kustore all the elements sehemu yoyote ile kula memory bure, Hapo kwenye line ya tano, unaweza weka njia yoyote ile ya kucompare. hiyo ya kucheki kama namba ni between 10 and 99 ndiyo the simplest way kucheki kama ni two digit, kumbuka nilitumia abs(i) ambayo inakupa positive integer hata kama ni negative, so that will always work. Njia nyingine ni kugawa hiyo number kwa 10 au hata kutumia bit operations kwa speed ila haina haja kabisa kwenye hili swali.