समस्या
हर न्यूरॉन एक ही गणना से शुरू होता है: हर इनपुट को उसके वेट से गुणा करें और सब जोड़ दें। यही दो वेक्टरों का डॉट प्रोडक्ट है:
a · b = a₁×b₁ + a₂×b₂ + … + aₙ×bₙ
dot_product(a, b) लागू करें।
इनपुट
a, b: समान लंबाई की दो संख्या सूचियाँ।
आउटपुट
डॉट प्रोडक्ट को दशमलव संख्या के रूप में लौटाएँ।
सीमाएँ
1 ≤ a की लंबाई = b की लंबाई ≤ 1,000
-1,000 ≤ हर मान ≤ 1,000
उदाहरण
इनपुट:
a = [1.0, 2.0, 3.0]
b = [4.0, 5.0, 6.0]
अपेक्षित आउटपुट:
expected = 32.0
इनपुट:
std::vector<double> a = {1.0, 2.0, 3.0};
std::vector<double> b = {4.0, 5.0, 6.0};
अपेक्षित आउटपुट:
double expected = 32.0;
इनपुट:
double[] a = new double[] {1.0, 2.0, 3.0};
double[] b = new double[] {4.0, 5.0, 6.0};
अपेक्षित आउटपुट:
double expected = 32.0;
व्याख्या
1×4 + 2×5 + 3×6 = 4 + 10 + 18 = 32।
इनपुट:
a = [0.5, -1.5]
b = [2.0, 4.0]
अपेक्षित आउटपुट:
expected = -5.0
इनपुट:
std::vector<double> a = {0.5, -1.5};
std::vector<double> b = {2.0, 4.0};
अपेक्षित आउटपुट:
double expected = -5.0;
इनपुट:
double[] a = new double[] {0.5, -1.5};
double[] b = new double[] {2.0, 4.0};
अपेक्षित आउटपुट:
double expected = -5.0;
व्याख्या
0.5×2 + (-1.5)×4 = 1 - 6 = -5।
कैसे हल करें
पहले खुद कोशिश करें, फिर एक-एक करके संकेत खोलें।
संकेत 1
दोनों lists के matching positions को multiply करें और results को एक total में जोड़ें.
संकेत 2
एक ही pass काफी है, क्योंकि हर pair final value में independently contribute करता है.
संकेत 3
ध्यान रखें दोनों lists की length same हो, और accumulator numeric type ऐसा हो जो जरूरत पड़े तो decimals preserve करे.
अपेक्षित जटिलता
समय O(n), अतिरिक्त स्थान O(1)
संदर्भ
यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।