class Solution:
def countSmaller(self, nums):
class Node:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
self.count = 0
def bst_insert(root, val, result, count):
if not root:
root = Node(val)
result.append(count)
return root
if val > root.val:
root.right = bst_insert(root.right, val, result, root.count + 1 + count)
else:
root.count += 1
root.left = bst_insert(root.left, val, result, count)
return root
root = None
result = []
for num in reversed(nums):
if not root:
root = Node(num)
result.append(0)
else:
bst_insert(root, num, result, 0)
return result[::-1]
Y2xhc3MgU29sdXRpb246CiAgICBkZWYgY291bnRTbWFsbGVyKHNlbGYsIG51bXMpOgogICAgICAgIGNsYXNzIE5vZGU6CiAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWwpOgogICAgICAgICAgICAgICAgc2VsZi52YWwgPSB2YWwKICAgICAgICAgICAgICAgIHNlbGYubGVmdCA9IE5vbmUKICAgICAgICAgICAgICAgIHNlbGYucmlnaHQgPSBOb25lCiAgICAgICAgICAgICAgICBzZWxmLmNvdW50ID0gMAoKICAgICAgICBkZWYgYnN0X2luc2VydChyb290LCB2YWwsIHJlc3VsdCwgY291bnQpOgogICAgICAgICAgICBpZiBub3Qgcm9vdDoKICAgICAgICAgICAgICAgIHJvb3QgPSBOb2RlKHZhbCkKICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY291bnQpCiAgICAgICAgICAgICAgICByZXR1cm4gcm9vdAogICAgICAgICAgICBpZiB2YWwgPiByb290LnZhbDoKICAgICAgICAgICAgICAgIHJvb3QucmlnaHQgPSBic3RfaW5zZXJ0KHJvb3QucmlnaHQsIHZhbCwgcmVzdWx0LCByb290LmNvdW50ICsgMSArIGNvdW50KQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcm9vdC5jb3VudCArPSAxCiAgICAgICAgICAgICAgICByb290LmxlZnQgPSBic3RfaW5zZXJ0KHJvb3QubGVmdCwgdmFsLCByZXN1bHQsIGNvdW50KQogICAgICAgICAgICByZXR1cm4gcm9vdAoKICAgICAgICByb290ID0gTm9uZQogICAgICAgIHJlc3VsdCA9IFtdCiAgICAgICAgZm9yIG51bSBpbiByZXZlcnNlZChudW1zKToKICAgICAgICAgICAgaWYgbm90IHJvb3Q6CiAgICAgICAgICAgICAgICByb290ID0gTm9kZShudW0pCiAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKDApCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBic3RfaW5zZXJ0KHJvb3QsIG51bSwgcmVzdWx0LCAwKQogICAgICAgIHJldHVybiByZXN1bHRbOjotMV0=