This is my first time using stack overflow, so I’m so sorry if this is formatted incorrectly in any way. For a comp sci project, I have to do some different things to a 40-item Array List of random numbers.

The task I’m struggling with is this:

Count the longest run of the same number. A run continues only when consecutive numbers have the same value. The repeated number and the length of the run is then printed.(Ex: Longest run is of number: 3, length is: 5.)

If there is more than one run of maximum length, mark the last one. Print the array with the longest run marked in the following fashion: 1 1 1 6 5 4 6 3 2 3 2 (3 3 3 3 3) 1 5 6 3 4 4 4

I genuinely have no idea how to approach this problem. Even just some pseudocode could be helpful; I know that these should probably be 2 different ‘for’ loops, one that detects the run and the other that prints it. **I have some code from a friend who completed this using Arrays instead of ArrayLists:**

public String longestRun() { int maxRun=1; int currentLen = 1; int repeated = x[0]; for (int i =1; i< 40-1; i++) { if (x[i] == x[i+1]) currentLen++; else { if (currentLen >= maxRun) { maxRun = currentLen; repeated = x[i-1]; startRun = i-maxRun; endRun = i-1; } currentLen = 1; } } return "The longest run is " + maxRun + " and the repeated number is " + repeated ; } public String printParenth() { for(int i = 0; i<40; i++) { if(i != startRun+1 && i != endRun+1) System.out.print(x[i]); else if(i == startRun+1) System.out.print("(" + x[i]); else System.out.print(x[i] + ")"); } return ""; }

I know how to create the ArrayList, convert to string & print, etc, it’s just this one task that I don’t understand. I assume this should be easier with an ArrayList, considering the increased number and utility of ArrayList methods. Thanks so much in advance, I really appreciate it!

## Advertisement

## Answer

- Put your numbers in a list or an array.
- Set max to 1 (you will always have at least 1 number).
- initialize
`count`

to 1. - initialize the variable
`most`

to the first number in the array - also set the variable
`last`

to the first number in the array. - Now iterate thru the list starting with the second number.
- If the current number
**is**the same as last, increment`count`

. - then see if
`count > max`

.- if it is
- set
`max`

=`count`

. - set
`most`

=`last`

- set
- if it isn’t
- set
`count`

= 1 - set
`last`

= current number

- set

- if it is
- continue in this fashion until all numbers have been checked.

At the end `most`

will contain the number that was repeated and `max`

will contain the length of the repetition.