Cách kiểm tra mảng cộng, cấp số cộng

Cho em hỏi bài này ạ!
image

Nhìn vào ví dụ đi bạn.
Dãy ban đầu có 8 phần tử và dãy hiệu có 7. Điều luôn đúng là: dãy hiệu luôn ít hơn dãy ban đầu 1 phần tử.
Tạo mảng mới để tính và lưu dãy hiệu. Từ dãy hiệu xét xem nó có phải là dãy cấp số cộng (tăng cố định).

Cách khác, áp dụng biến đổi toán học ngay trên dãy ban đầu để tính luôn mà không cần đến dãy hiệu.

2 Likes

Bạn xem code mình sai ở đâu được không ạ:

  boolean additionSubArray(int[] arr) {
        int l=arr.length-1;
        int[] arr2 = new int[l];
        int sum;
        for(int i=0;i<arr.length-1;i++){
            sum=arr[i+1]-arr[i];
            arr2[i]=sum;
        }
        int m=arr2.length-1;
        int[] arr3 = new int[m];
        int zum;
        for(int i=0;i<arr2.length-1;i++){
            sum=arr2[i+1]-arr2[i];
            arr3[i]=sum;
        }
        for(int z=0;z<arr3.length-1;z++){
            if(arr3[z]!=arr3[z+1]){
                return false;
            }
            
        }
        return true;
    }

Đọc kĩ đề bài, có vài con số bạn bỏ qua có thể làm kết quả của bạn không chính xác.
Một ví dụ: “Cấp số cộng là một dãy số có ít nhất 3 phần tử…”.

3 Likes

cảm ơn SITUVN.gcd nhưng ngoài cái đó thì còn cái nào dẫn đến sai kết quả nữa không ạ?
em vẫn đang sai 1 test case ẩn không biết là gì ạ:

Có khả năng là dãy cấp số trừ (giảm) hoặc không tăng/giảm không?
Cấp số cộng (dãy hiệu) tối thiểu là 3 phần tử thì dãy cộng (ban đầu) phải là 4.

3 Likes

cảm ơn bạn nhiềuuuuuuuuuuuuuuuu

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?