def countSmaller(self, nums):
def sort(enum):
half = len(enum) / 2
if half:
left, right = sort(enum[:half]), sort(enum[half:])
for i in range(len(enum))[::-1]:
if not right or left and left[-1][1] > right[-1][1]:
smaller[left[-1][0]] += len(right)
enum[i] = left.pop()
else:
enum[i] = right.pop()
return enum
smaller = [0] * len(nums)
sort(list(enumerate(nums)))
return smaller
我是一个新的python编码器所以这个查询!..在左[-1] [1],我理解[-1]让我想到最后一个索引,但第二个索引[1]是什么意思。
答案 0 :(得分:3)
第二个索引与第一个索引相同但具有嵌套值。 例如:
a = [(1, 2), (2, 3), (3, 4)]
a[-1] # (3, 4)
a[-1][1] # 4
在您的示例中,您没有包含数字的列表,但枚举转换为列表的对象
sort(list(enumerate(nums)))
这意味着你有这样的数据:
nums = [1, 2, 3, 4, 5]
enum_list = list(enumerate(nums)) # [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)]
答案 1 :(得分:2)
似乎left
是一个包含元组的数组。即数组的每个元素都是一个元组。
例如:left=[(value1oftuple1,value2oftuple1),(value1ofarray2,value2ofarray2)]
在这种情况下,left[-1][1]
将引用数组最后一个元素中的第一个值(value1ofarray2
)。
我发现这是通过运行代码并在代码调用left
之前打印left[-1][1]
的值来实现的。这样您就可以看到剩下的数据类型。