云小杰

相对于绝对成功的汲汲渴求,越无杂质的奔赴,越是动人。

要一个黄昏, 满是风, 和正在落下的夕阳。如此, 足够我爱这破碎泥泞的人间。


Download the theme

复数乘法

537. 复数乘法

题目描述

复数 可以用字符串表示,遵循 "实部+虚部i" 的形式,并满足下述条件:

  • 实部 是一个整数,取值范围是 [-100, 100]
  • 虚部 也是一个整数,取值范围是 [-100, 100]
  • i2 == -1

给你两个字符串表示的复数 num1num2 ,请你遵循复数表示形式,返回表示它们乘积的字符串。

示例1:

输入num1 = "1+1i", num2 = "1+1i"
输出"0+2i"
解释(1 + i) * (1 + i) = 1 + i2 + 2 * i = 2i 你需要将它转换为 0+2i 的形式

示例2:

输入num1 = "1+-1i", num2 = "1+-1i"
输出"0+-2i"
解释(1 - i) * (1 - i) = 1 + i2 - 2 * i = -2i 你需要将它转换为 0+-2i 的形式 

算法:模拟

​ 根据题目中对于复数形式的定义 实部+虚部 * i,假则nums1nums2 分别可以用 A+B*iC+D*i表示,且 \((A + B*i) \times (C+D*i)=\\ AC + A*D*i+B*C*i+B*D*i*i=\\ (AC - BD) + (AD + BC)*i\)

class Solution {
    public String complexNumberMultiply(String num1, String num2) {
        String[] complex1 = num1.split("\\+|i");
        String[] complex2 = num2.split("\\+|i");
        int A = Integer.parseInt(complex1[0]);
        int B = Integer.parseInt(complex1[1]);
        int C = Integer.parseInt(complex2[0]);
        int D = Integer.parseInt(complex2[1]);

        return String.format("%d+%di", A * C - B * D, A * D + B * C);
    }
}
最近的文章

左叶子之和

404. 左叶子之和题目描述给定二叉树的根节点 root ,返回所有左叶子之和。示例1:输入: root = [3,9,20,null,null,15,7] 输出: 24 解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24示例 2:输入: root = [1]输出: 0方法一:层次遍历一个节点是 左叶子 节点,当前仅当它是某个节点的叶子阶段,且是一个叶子结点的时候。所以对整棵树进行遍历即可,当我们遍历到节点 node 时,如果它的左子节点是一个叶子结点,那么就将它的...…

继续阅读
更早的文章

二叉树的最大深度

104. 二叉树的最大深度题目描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。方法一:层次遍历可以使用层次遍历的方法,定义一个队列 deque,每一次将二叉树整行的节点存入队列,这样就可以根据循环的次数判断出二叉树的高度。/** * Definitio...…

继续阅读