Register
|
Login
Home
News
Competitions
Practice
How to
Rankings
Calendar
Arena
CodeFu 2007
CodeFu'07 Highlights
Jazoon'07 Highlights
Schedule
Rules
Prizes
Results
Competitions
»
Main CodeFu Competitons
»
CodeFu 2007
»
Results
CodeFu 2007 Results
CodeFu Final Round Results
vasil's solution for 200: Consecutive Numbers, written in Java
import java.util.Arrays; public class ConsecutiveNumbers { public static int longestSequence(int[] numbers) { Arrays.sort(numbers); int zeros = 0; // find number of zeros for (int i = 0; i < numbers.length; i++) { if (numbers[i] == 0) zeros++; } int oZeros = zeros; int[] numbersZ = new int[numbers.length - zeros]; for (int i = zeros; i < numbers.length; i++) { if (numbers[i] != 0) numbersZ[i - zeros] = numbers[i]; } int max = 1; int lastMax = 1; for (int i = 0; i < numbersZ.length - 1; i++) { for (int j = i; j < numbersZ.length - 1; j++) { if (numbersZ[j + 1] == numbersZ[j] + 1) { max++; } else if (zeros > 0) { zeros--; max++; numbersZ[j + 1] = numbersZ[j] + 1; } else { break; } } zeros = oZeros; lastMax = lastMax < max ? max : lastMax; max = 1; if (oZeros > 0) { for (int z = zeros; z < numbers.length; z++) { if (numbers[z] != 0) numbersZ[z - zeros] = numbers[z]; } } } return lastMax; } }