Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 给定一个排序数组,在适当的位置删除重复项,使每个元素只出现一次并返回新的长度_Python_List - Fatal编程技术网

Python 给定一个排序数组,在适当的位置删除重复项,使每个元素只出现一次并返回新的长度

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

完整的问题,我开始在线学习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[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]