[英]Remove Duplicates from Sorted Array
给定一个按非递减顺序排序的 integer 数组 nums,就地删除重复项,使每个唯一元素只出现一次。 元素的相对顺序应保持不变。
由于在某些语言中无法更改数组的长度,因此您必须将结果放在数组 nums 的第一部分。 更正式地说,如果在删除重复项后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。 除了前 k 个元素之外,你留下什么并不重要。
将最终结果放入 nums 的前 k 个槽位后返回 k。
不要为另一个数组分配额外的空间。 您必须通过使用额外的 O(1) memory 就地修改输入数组来执行此操作。以下是代码示例
class Solution(object):
def removeDuplicates(self, nums):
c = []
for x in range(len(nums)-1):
if nums[x] != nums[x+1]:
c[x] = nums[x]
self = len(c)
print(self,c)
我得到一个错误,说 nums 没有定义,但在 leetcode 中它应该自动定义它。 那么为什么我会收到此错误?
c 列表被初始化为一个空列表,但它从不用于存储任何值。 相反,您应该直接修改 nums 。 该循环只遍历 nums 的元素,直到倒数第二个元素,但您还需要检查最后一个元素。print 语句在 for 循环内缩进,因此它会在每次迭代时执行环形。 这可能不是您想要的。
使固定:
class Solution(object):
def removeDuplicates(self, nums):
i = 0 # Initialize the index
for j in range(1, len(nums)):
if nums[j] != nums[i]:
i += 1
nums[i] = nums[j]
# Return the number of unique elements in nums
return i + 1
# Test the function
s = Solution()
nums = [1, 2, 2, 3, 3, 3, 4, 5]
print(s.removeDuplicates(nums)) # Output: 5
print(nums) # Output: [1, 2, 3, 4, 5]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.