Dat kan natuurlijk ook, maar in redelijk wat talen moet je alsnog door een hoepeltje springen om vergelijkingen (groter/kleiner) te doen dus dan kan je er net zo goed een int van maken. En in deel 1 weet je natuurlijk nog niet wat deel 2 gaat zijn, terwijl de kans op wiskunde behoorlijk groot is dus dat kan je beter direct al goed doen. In ieder geval maakt het voor de looptijd niks uit, je kan namelijk in
O(n) alles omzetten naar ints en diezelfde
O(n) heb je sowieso al nodig voor het inlezen alleen al. Algoritmisch gezien wordt het er dus niet slechter van. Het verkeerde algoritme kiezen voor het daadwerkelijke uitrekenen is juist hetgene wat enige impact gaat hebben.
Sterker nog: op sommige architecturen kan het juist sneller zijn met een array van ints die memory-aligned zijn, in tegenstelling tot het ophalen van een bepaalde byte in een string, wat bijvoorbeeld een 32-bits of 64-bits read is waarna nog een shift en een and moet gebeuren om daar die ene byte uit te halen. Maar op het moment dat je naar dat soort optimalisaties gaat kijken zijn er al heftige dingen aan de hand. En ook dit doet algoritmisch gezien niks aan de looptijd, nog steeds
O(n).
Edit: nou moet ik wel zeggen dat jouw algoritme stiekem kwadratisch lijkt, maar daarbij ook vermelden dat ik nauwelijks ervaring heb met java (dus de library niet ken).
Edit2: nu ik 'm draai lijkt het nog meer kwadratisch

Edit3: probeer maar met
Up 4, bzipped. Antwoorden 2 en 958429
[
Voor 27% gewijzigd door
DataGhost op 09-12-2021 21:06
]