Xin chào các bạn, bài viết này mình xin hướng dẫn các bạn cách giải quyết bài toán cách tìm số lớn thứ hai trong C/C++. Đây là một bài toán thường gặp trong phỏng vấn, mình đã gặp câu này tới tận 3 lần =))

Giới thiệu bài toán

Đề bài: Hãy tìm số lớn thứ 2 trong mảng các số nguyên (mảng sẽ có ít nhất hai phần tử và tất cả phần tử không được giống nhau).

Input: 1, 2, 3, 4, 5, 6, 7, 8, 9

Output: 8

Cách giải quyết bài toán

Ý tưởng:

  • Chúng ta cần hai biến max, answer để chứa các giá trị lớn nhất lớn nhì của mảng.

  • Chúng ta sẽ duyệt lần lượt các phần tử trong mảng để kiểm tra điều kiện:

    • Nếu phần tử arr[i] lớn hơn max, thì chúng ta cập nhật answer = max;max = arr[i];

    • Nếu phần tử arr[i] lớn hơn answer và nhỏ hơn max, chúng ta cập nhật answer = arr[i];

Code:

#include <stdio.h>

int solution(int arr[], int length) {
  int max = arr[0];
  int answer = 0;

  // Tim so lon thu 2 va gan cho bien answer
  for (int i = 0; i < length; i++) {
    if (arr[i] < max) {
      answer = arr[i];
      break;
    }
  }

  for (int i = 0; i < length; i++) {
    if (arr[i] > max) {
      answer = max;
      max = arr[i];
    }
    else if (arr[i] > answer && arr[i] < max) {
      answer = arr[i];
    }
  }

  return answer;
}

int main() {
 int arr[] = {1,2,3,4,5,6,7,8,9};
 int length = 9;
 int answer = solution(arr, length);
 printf("%d\n", answer);
}

Kết quả:

8

Xem thêm: Cách tìm số lớn nhất mảng.

Kết luận

Như vậy mình đã hướng dẫn các bạn cách tìm số lớn thứ nhì trong mảng. Cám ơn các bạn đã theo dõi, chúc các bạn một ngày mới tốt lành!