Tất cả thử thách
Dễ 0 đã giải Tỷ lệ chấp nhận 0%

Tích vô hướng của hai vector

Nhân hai vector theo từng phần tử rồi cộng kết quả lại, phép tính cốt lõi của mọi nơ-ron.

Bạn sẽ học được gì

  • Nhân từng phần tử của hai vector rồi cộng lại
  • Hiểu phép toán cốt lõi của một nơ-ron
  • Làm việc với mảng số

Đề bài

Xem bản gốc (English)

Mọi nơ-ron đều bắt đầu bằng cùng một phép tính: nhân từng đầu vào với trọng số của nó rồi cộng tất cả lại. Đó là tích vô hướng của hai vector:

a · b = a₁×b₁ + a₂×b₂ + … + aₙ×bₙ

Hãy cài đặt dot_product(a, b).

Đầu vào

a, b: Hai danh sách số có cùng độ dài.

Đầu ra

Trả về tích vô hướng dưới dạng số thực.

Ràng buộc

1 ≤ độ dài của a = độ dài của b ≤ 1.000

-1.000 ≤ mỗi giá trị ≤ 1.000

Ví dụ

Ví dụ 1
Đầu vào:
a = [1.0, 2.0, 3.0]
b = [4.0, 5.0, 6.0]

Kết quả mong đợi:
expected = 32.0
Đầu vào:
std::vector<double> a = {1.0, 2.0, 3.0};
std::vector<double> b = {4.0, 5.0, 6.0};

Kết quả mong đợi:
double expected = 32.0;
Đầu vào:
double[] a = new double[] {1.0, 2.0, 3.0};
double[] b = new double[] {4.0, 5.0, 6.0};

Kết quả mong đợi:
double expected = 32.0;

Giải thích

1×4 + 2×5 + 3×6 = 4 + 10 + 18 = 32.

Ví dụ 2
Đầu vào:
a = [0.5, -1.5]
b = [2.0, 4.0]

Kết quả mong đợi:
expected = -5.0
Đầu vào:
std::vector<double> a = {0.5, -1.5};
std::vector<double> b = {2.0, 4.0};

Kết quả mong đợi:
double expected = -5.0;
Đầu vào:
double[] a = new double[] {0.5, -1.5};
double[] b = new double[] {2.0, 4.0};

Kết quả mong đợi:
double expected = -5.0;

Giải thích

0.5×2 + (-1.5)×4 = 1 - 6 = -5.

Hướng tiếp cận

Hãy tự thử trước, sau đó mở từng gợi ý một.

Gợi ý 1

Nhân các vị trí tương ứng của hai danh sách rồi cộng lại thành một tổng duy nhất.

Gợi ý 2

Chỉ cần duyệt một lần vì mỗi cặp đóng góp độc lập vào giá trị cuối.

Gợi ý 3

Đảm bảo hai danh sách cùng độ dài, và dùng kiểu số cho biến tích lũy đủ giữ phần thập phân nếu cần.

Độ phức tạp mong đợi

thời gian O(n), bộ nhớ phụ O(1)

Tham khảo

Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.

Học hỏi từ người khác

Giải pháp cộng đồng

Chưa có giải pháp nào được chia sẻ. Hãy giải thử thách này để đăng giải pháp đầu tiên.