Cần hỗ trợ về giải quyết mảng

em gặp chút khó khăn với bài toán:
i là tích của các phần tử trong mảng ngoại trừ giá trị ở vị trí thứ i.
vị dụ a[1,2,3]=>[6,3,2]
em chưa rõ chỗ khi duyệt vị trí i. e sẽ loại bỏ giá trí ở vị trí đó ra khỏi mảng ntn.

Mình có ý tưởng thế này:
B1: Bạn tính tích của tất cả các phần tử trong mảng.
B2: Duyệt mảng 1 lần nữa, rồi lấy cái tích đó chia cho phần tử thì sẽ ra kết quả của bạn :smile:


Với ví dụ trên [1,2,3] ==> Tích tổng là 1*2*3 = 6
Sau đó thì duyệt mảng:

  • i = 0 ==> index = 6/1 = 6
  • i = 1 ==> index = 6/2 = 3
  • i = 2 ==> index = 6/3 = 2

==> Kết quả [6,2,3]

3 Likes

cảm ơn ạ… thế mà e ko nghĩ ra nhỉ… đầu óc lú quá

1 Like

Java Code

import java.util.Arrays;

public class TestArray {
	
	public static void main(String[] args) {
		
		int[] arrInt = {1, 2, 3};

		int total = 1;
		int length = arrInt.length;

		for(int i = 0; i < length; ++i){
			total *= arrInt[i];
		}

		for(int i = 0; i < length; ++i){
			arrInt[i] = total / arrInt[i];
		}

		System.out.println(Arrays.toString(arrInt));
	}
}

Java Code phiên bản dành cho máy khoẻ

int[] multipliedArrayFrom(int[] input)
{
    if(input.length <= 1)
        return input;
    int[] output = new int[input.length];
    for (int i = 0; i < output.length; i += 1)
        output[i] = 1;
    for (int i = 0; i < output.length; i += 1)
        for (int j = 0; j < output.length; j += 1)
            if (i != j)
                output[i] *= input[j];
    return output;
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?