Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Khoảng cách tối đa giữa hai lần xuất hiện của cùng phần tử trong mảng C

Cho một mảng số nguyên có nhiều phần tử trùng lặp. Nhiệm vụ là tìm khoảng cách tối đa giữa hai lần xuất hiện của cùng một phần tử.

Ví dụ

Đầu vào

Arr[] = { 1, 2, 4, 1, 3, 4, 2, 5, 6, 5 }

Đầu ra - Khoảng cách tối đa: 4

Giải thích - Các phần tử lặp và chỉ số:

1: chỉ số đầu 0, cuối 3 → khoảng cách = 3-0-1 = 2
2: chỉ số đầu 1, cuối 6 → khoảng cách = 6-1-1 = 4
5: chỉ số đầu 7, cuối 9 → khoảng cách = 9-7-1 = 1
Khoảng cách tối đa: 4

Đầu vào

Arr[] = { 10, 20, 1, 10, 10, 21, 12, 0 }

Đầu ra - Khoảng cách tối đa: 3

Lưu ý - Nếu mảng không có phần tử lặp, trả về -1

Phương pháp

  • Nhận mảng Arr[]
  • Hàm maxDistance(int arr[], int n)
  • Khởi tạo maxD = -1
  • Duyệt mảng với 2 vòng lặp lồng nhau
  • Nếu arr[i] == arr[j], tính temp = j - i - 1
  • Cập nhật maxD nếu temp lớn hơn
  • Trả về maxD

Chương trình mẫu

#include <stdio.h>
#include <stdlib.h>

int maxDistance(int arr[], int n) {
    int maxD = -1;
    for (int i = 0; i < n - 1; i++) {
        for (int j = i + 1; j < n; j++) {
            if (arr[i] == arr[j]) {
                int temp = abs(j - i - 1);
                if (temp > maxD)
                    maxD = temp;
            }
        }
    }
    return maxD;
}

int main() {
    int Arr[] = {1, 2, 4, 1, 3, 4, 2, 5, 6, 5};
    printf("Khoảng cách tối đa: %d", maxDistance(Arr, 10));
    return 0;
}

Kết quả

Khoảng cách tối đa: 4