Consider an array X that contains n positive integers. A subarray of X is…

GATE · 2024 · CS · Set 2 · Computer Science & IT

Consider an array X that contains n positive integers. A subarray of X is defined to be a sequence of array locations with consecutive indices.

The C code snippet given below has been written to compute the length of the longest subarray of X that contains at most two distinct integers. The code has two missing expressions labelled (𝑃) and (𝑄).

int first=0, second=0, len1=0, len2=0, maxlen=0;
for (int i=0; i < n; i++) {
    if (X[i] == first) {
            len2++; len1++;
    } else if (X[i] == second) {
            len2++;
           len1 = (𝑃) ;
            second = first;
      } else {
            len2 = (𝑄) ;
            len1 = 1; second = first;
      }
    if (len2 > maxlen) {
            maxlen = len2;
    }
    first = X[i];
}

Which one of the following options gives the CORRECT missing expressions?

(Hint: At the end of the i-th iteration, the value of len1 is the length of the longest subarray ending with X[i] that contains all equal values, and len2 is the length of the longest subarray ending with X[i] that contains at most two distinct values.)

  1. A.

    (𝑃) len1+1     (𝑄) len2+1

  2. B.

    (𝑃) 1     (𝑄) len1+1

  3. C.

    (𝑃) 1     (𝑄) len2+1

  4. D.

    (𝑃) len2+1     (𝑄) len1+1

Attempted by 83 students.

Sign up free to check your answer

Sign up free

Explore the full course: Gate Guidance By Sanchit Sir

Loading lesson…