问题如下:
给定一个按非降序排序的整数数组 nums,就地删除重复项,以便每个唯一元素仅出现一次。元素的相对顺序应保持相同。然后返回 t_nums 中唯一元素的数量_.
考虑nums的唯一元素的数量为k,要被接受,你需要做以下事情:
更改数组 nums,使 nums 的前 k 个元素按照它们最初在 nums 中出现的顺序包含唯一元素。 nums 的其余元素以及 nums 的大小并不重要。返回k.
自定义法官:
法官将使用以下代码测试你的解决方案:
int[] nums = [...]; // 输入数组int[] 预期数量 = [...]; // 具有正确长度的预期答案int k = 删除重复项(nums); // 调用你的实现断言 k == ExpectedNums.length;for (int i = 0; i < k; i++) { 断言 nums[i] == ExpectedNums[i];}
登录后复制
如果所有断言都通过,那么你的解决方案将被接受。
示例1:
输入:nums = [1,1,2]输出:2,nums = [1,2,_]说明:您的函数应返回 k = 2,其中 nums 的前两个元素分别为 1 和 2。除了返回的 k(因此它们是下划线)之外,留下什么并不重要。
登录后复制
示例2:
输入:nums = [0,0,1,1,1,2,2,3,3,4]输出:5,nums = [0,1,2,3,4,_,_,_,_,_]说明:您的函数应返回 k = 5,其中 nums 的前五个元素分别为 0、1、2、3 和 4。除了返回的 k(因此它们是下划线)之外,留下什么并不重要。
登录后复制
这是我解决的方法:
首先,初始化一个指针 k 并将其设置为 0。该指针将跟踪数组中最后一个唯一元素的位置。
类解决方案: def removeDuplicates(self, nums: List[int]) -> int: # 初始化指针'k'并将其设置为0 k = 0
登录后复制从第二个元素(索引 1)开始循环遍历 nums 数组。第一个元素始终是唯一的,因此我们可以跳过它进行比较。检查重复项:如果当前元素 nums[i] 与最后一个唯一元素 nums[k] 不同。如果是的话,说明我们找到了新的独特元素。移动到下一个元素并将 nums[k] 更新为当前元素 nums[i]。
对于范围内的 i(1, len(nums)): 如果 nums 且 nums[i] != nums[k]: k+=1 nums[k] = nums[i]
登录后复制循环结束后,k将是最后一个唯一元素的索引,因此唯一元素的总数为k + 1。返回k + 1,因为k从0’开始
返回k+1
登录后复制
这是完整的解决方案:
类解决方案: def removeDuplicates(self, nums: List[int]) -> int: k = 0 对于范围内的 i(1, len(nums)): 如果 nums 且 nums[i] != nums[k]: k+=1 nums[k] = nums[i] 返回 k + 1
登录后复制
以上就是Leetcode Day 从排序数组中删除重复项解释的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2198151.html