首页 > 解决方案 > 将两个多项式相乘(使用单链表)的一种更省时的方法?

问题描述

我有一个 Java 问题。我正在编写一种将两个多项式相乘的方法(存储为项的单链表)。我已经有了将一项乘以多项式并将两个多项式相加的方法。

在我当前的解决方案中,我创建了两个多项式对象,然后在 for-each 循环中,我使temp对象等于p1的深层克隆(之前,我只是将temp设置为等于p1,我现在意识到每次改变p1都会改变temp)。

然后,我将p2的当前项与 temp 相乘,并将生成的多项式添加到占位符对象multiplyPoly中。

目前,我认为这是在 O(n^3) 运行的。有没有办法可以更有效地做到这一点,也许不必创建p1的副本?

 public static Polynomial multiply(Polynomial p1, Polynomial p2)
 {
  Polynomial multiplyPoly = new Polynomial();
  Polynomial temp = new Polynomial();


  for (Term y : p2.polynomial) {
   temp.polynomial = p1.polynomial.deepClone();
   temp.multiplyTerm(y);
    multiplyPoly = Polynomial.add(multiplyPoly,temp);
   }
   return multiplyPoly;
 }

标签: javalist

解决方案


推荐阅读