Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで2つのスパースベクトルの内積を見つけるプログラム


2つのリストで表される2つのスパースベクトルがあるとします。 2つのスパースベクトルの内積を返す必要があります。ベクトルはオブジェクトとして表され、リストはオブジェクトのメンバー変数'nums'に格納されます。

したがって、入力がvector1 =[1、0、0、0、1]、vector2 =[0、0、0、1、1]のようである場合、出力は1になります。内積は1 * 0+0です。 * 0 + 0 * 0 + 0 * 1 + 1 * 1=1。

これを解決するには、次の手順に従います-

  • res:=0

  • インデックスiごとに、vector2の数の値vを実行します

    • vが0と同じ場合、

      • 続行

    • それ以外の場合、vector1のnums [i]が0と同じ場合、

      • 次のイテレーションに行く

    • それ以外の場合

      • res:=res + v * nums [i] of vector1

  • 解像度を返す

例(Python)

理解を深めるために、次の実装を見てみましょう-

class Solution:
   def __init__(self, nums):
      self.nums = nums

   def solve(self, vec):
      res = 0
   for i, v in enumerate(vec.nums):
      if v == 0:
         continue
      elif self.nums[i] == 0:
         continue
      else:
         res += v * self.nums[i]
   return res

ob1, ob2 = Solution([1, 0, 0, 0, 1]), Solution([0, 0, 0, 1, 1])
print(ob1.solve(ob2))

入力

[1, 0, 0, 0, 1], [0, 0, 0, 1, 1]

出力

1

  1. グラフがPythonのすべての人によってトラバース可能かどうかを確認するプログラム

    0からn-1までの番号が付けられたn個の頂点を含むグラフが与えられたとします。グラフは無向であり、各エッジには重みがあります。グラフには3種類の重みを設定でき、各重みは特定のタスクを示します。グラフをトラバースできるのは、ジャックとケーシーの2人です。エッジの重みが1の場合、ジャックはグラフをトラバースできます。重みが2の場合、ケーシーはグラフをトラバースできます。エッジの重みが3の場合、両方がグラフをトラバースできます。グラフを両方でトラバース可能にするために必要なエッジをすべて削除する必要があります。ジャックとケーシー。グラフをトラバース可能にするために削除するエッジの数を返します。トラバ

  2. いいえが2の累乗であるかどうかを調べるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 数nが与えられた場合、与えられた数が2の累乗であるかどうかを確認する必要があります。 アプローチ 入力数を2で割り続けます。つまり、=n/2を繰り返します。 各反復で、n%2がゼロ以外になり、nが1でない場合、nは2の累乗ではないことを確認します。 nが1になると、2の累乗になります。 以下の実装を見てみましょう- 例 def isPowerOfTwo(n):    if (n == 0):       retur