Python 给定一个排序数组,在适当的位置删除重复项,使每个元素只出现一次并返回新的长度
完整的问题,我开始在线学习python,但这个问题标记为“简单” 给定一个已排序的数组,在适当的位置删除重复项,以便每个 元素只出现一次并返回新的长度。不分配 对于另一个数组的额外空间,必须通过修改输入来完成此操作 使用O(1)个额外内存就地阵列Python 给定一个排序数组,在适当的位置删除重复项,使每个元素只出现一次并返回新的长度,python,list,Python,List,完整的问题,我开始在线学习python,但这个问题标记为“简单” 给定一个已排序的数组,在适当的位置删除重复项,以便每个 元素只出现一次并返回新的长度。不分配 对于另一个数组的额外空间,必须通过修改输入来完成此操作 使用O(1)个额外内存就地阵列 这是相当容易的,一旦你意识到你必须从列表的末尾开始工作,这样你的删除就不会改变列表中你还没有检查过的部分 a = [1,1,1,3,4,5,5,5,5,7,7,7,9,9] for i in range(len(a)-1,0,-1): if a
这是相当容易的,一旦你意识到你必须从列表的末尾开始工作,这样你的删除就不会改变列表中你还没有检查过的部分
a = [1,1,1,3,4,5,5,5,5,7,7,7,9,9]
for i in range(len(a)-1,0,-1):
if a[i] == a[i-1]:
del a[i]
结果是
[1, 3, 4, 5, 7, 9]
看起来您正在解决一个LeetCode问题: 如果是,这应该是您的答案:
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
if len(nums) == 1:
return 1
i = 0
for j in range(1, len(nums)):
if (nums[i] != nums[j]):
i += 1
nums[i] = nums[j]
return i + 1
在返回的长度之外,您留下什么并不重要
来自@BoarGules的第一个答案是最好的。但我们也可以朝着前进的方向去做
a = [1,1,1,3,4,5,5,5,5,7,7,7,9,9]
i =0
l = len(a)-1
while i < l :
if a[i] == a[i+1]:
del a[i+1]
l -=1
else :
i +=1
print(a)
欢迎来到SO。不幸的是,这不是一个讨论论坛或教程。请花点时间阅读该页面上的链接和其他链接。花些时间练习这些例子。它将让您了解Python提供的帮助您解决问题的工具。你没有问任何问题。哦,我分享了我的代码,但它是错的,我只是想知道它是怎么错的,我一开始也分享了这个问题。你能不能添加一个完整的答案,这样我就可以测试,然后接受它,如果它对我有效,谢谢。可能重复的
a = [1,1,1,3,4,5,5,5,5,7,7,7,9,9]
i =0
l = len(a)-1
while i < l :
if a[i] == a[i+1]:
del a[i+1]
l -=1
else :
i +=1
print(a)
[1, 3, 4, 5, 7, 9]