大家好,我是 @负雪明烛。👈👈 点击关注,优质题解不间断。

题目大意

求复数乘法。

解题方法

Python 复数

题解区清一色的「模拟法」,作为不走寻常路的我,必须写一个“与众不同”来。

分享一个冷知识:Python 自带的就有复数类型,我们可以直接用。

Python 的复数是由一个实数和一个虚数组合构成,表示为:real + imag j

比如一个复数类型 a = 1 + 2j,我们可以通过 a.reala.imag分别获取它的实数和虚数部分为 $1.0$ 和 $2.0$。

  1. In [1]: a = 1 + 2j
  2. In [2]: a
  3. Out[2]: (1+2j)
  4. In [3]: a.real
  5. Out[3]: 1.0
  6. In [4]: a.imag
  7. Out[4]: 2.0

由于题目给出的数据格式是 "1+1i",我们把 "i" 替换成"j",再 eval()一下就得到了复数类型。

复数的乘法规则就不再赘述了。

代码

Python 代码如下:

  1. class Solution(object):
  2. def complexNumberMultiply(self, num1, num2):
  3. """
  4. :type num1: str
  5. :type num2: str
  6. :rtype: str
  7. """
  8. num1 = eval(num1.replace("i", "j"))
  9. num2 = eval(num2.replace("i", "j"))
  10. real = num1.real * num2.real - num1.imag * num2.imag
  11. imag = num1.real * num2.imag + num1.imag * num2.real
  12. return "%d+%di" % (real, imag)

复杂度

  • 时间复杂度:537. 复数乘法 - 图1,题目给出的复数很小。
  • 空间复杂度: 537. 复数乘法 - 图2#card=math&code=O%281%29&id=Pz3XE)

总结

  1. 本题解旨在让你扩展思路,面试过程中不要这么写哦~

我是 @负雪明烛 ,刷算法题 1000 多道,写了 1000 多篇算法题解,收获阅读量 300 万。
关注我,你将不会错过我的精彩动画题解、面试题分享、组队刷题活动,进入主页 @负雪明烛 右侧有刷题组织,从此刷题不再孤单。