问题描述
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编码器,所以此查询!..在left [-1] [1]中,我理解[-1]使我想到了最后一个索引,但是第二个索引[1]意味着什么。
1楼
第二个索引与第一个索引相同,但具有嵌套值。 举个例子:
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)]
2楼
似乎left
是一个包含元组的数组。
即,数组的每个元素都是一个元组。
例如: left=[(value1oftuple1,value2oftuple1),(value1ofarray2,value2ofarray2)]
在这种情况下, left[-1][1]
将引用数组最后一个元素中的第一个值( value1ofarray2
)。
通过运行代码并在代码调用left[-1][1]
之前打印出left
的值,可以发现这一点。
这样,您可以查看剩下的数据类型。