Difficulty: Hard
I did not get this, what is a Fenwick Tree
class Solution(object):
def goodTriplets(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: int
"""
n = len(nums1)
pos2, reversedIndexMapping = [0] * n, [0] * n
for i, num2 in enumerate(nums2):
pos2[num2] = i
for i, num1 in enumerate(nums1):
reversedIndexMapping[pos2[num1]] = i
tree = FenwickTree(n)
res = 0
for value in range(n):
pos = reversedIndexMapping[value]
left = tree.query(pos)
tree.update(pos, 1)
right = (n - 1 - pos) - (value - left)
res += left * right
return res
class FenwickTree:
def __init__(self, size):
self.tree = [0] * (size + 1)
def update(self, index, delta):
index += 1
while index <= len(self.tree) - 1:
self.tree[index] += delta
index += index & -index
def query(self, index):
index += 1
res = 0
while index > 0:
res += self.tree[index]
index -= index & -index
return res
Time Complexity:
O(n log n)
Space Complexity:
O(n)
Time Taken:
did not complete