编写一个函数,将一组数字以升序排列,并删除重复项。
发布时间:2023-06-01 01:21:06
此处给出Python实现的例子代码:
def sort_and_remove_duplicates(nums):
# 先排序
nums.sort()
# 记录前一个数字
prev = None
# 遍历列表
for i in range(len(nums)):
# 如果当前数字和前一个相同,删除当前数字
if nums[i] == prev:
del nums[i]
# 此处需要重新遍历当前位置,因为列表长度减小了
i -= 1
else:
prev = nums[i]
return nums
代码解释如下:
首先,我们对列表进行排序,这可用列表方法sort()来实现。
接着,我们定义一个变量prev,用来记录前一个数字,初始值设为None。
接着,我们用for循环遍历列表中的每个数字。对于每个数字,如果它和前一个数字相同(比较的方法是nums[i] == prev),则将其从列表中删除(可用列表方法del实现)。
如果当前数字和前一个数字不同,则将prev更新为当前数字的值。
在遍历完所有数字后,我们将排序后的列表返回。
这个函数可以对任意大小的整数列表进行排序和去重,时间复杂度为O(n log n)(排序算法的时间复杂度)+ O(n)(遍历列表的时间复杂度),空间复杂度为O(1)(只用了常数级的额外空间)。
