单词长度的最大乘积刷题总结
算法知识总结
-
该方法目前只能采取位运算的方法。 朴素做法是遍历每一对单词,然后遍历他们的每一个字母。该方法时间复杂度O ( ( n − 1 ) ∗ l 1 ∗ l i ( i = 2 → n ) + ( n − 2 ) ∗ l 2 ∗ l i ( i = 3 → n ) + . . . ) ∗ ((n-1)*l_1*l_i(i=2→n) + (n-2)*l_2*l_i(i=3→n)+... )* ((n−1)∗l1∗li(i=2→n)+(n−2)∗l2∗li(i=3→n)+...)∗)。时间复杂度过大。
采用位运算时间复杂度为O( n 2 n^2 n2)相对简单很多。 -
位运算的图示
-
官方说可以采用map容器进一步优化位运算,但是有人说map的查找耗时是O(logN)所以还是不采取这种方法,深入理解位运算的原理。
C++代码总结
- for (auto [mask1, _] : map) map容器还可以用这种方式遍历,使用auto不需要定义变量类型,_表示不需要该参数。