Leetcode面试经典150_Q26删除有序数组中的重复项

题目:

给你一个 非严格递增排列 的数组 nums ,请你**原地** 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。

考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:

  • 更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
  • 返回 k

解题思路:双指针(快慢指针法)

Python解法:

复制代码
class Solution(object):
    def removeDuplicates(self, nums):
        slow = 0
        if len(nums)<2:
            return len(nums)
        for fast in range(1,len(nums)):
            if nums[fast]==nums[slow]:
                fast+=1
            else:
                slow+=1
                nums[slow]=nums[fast]
        return slow+1

C++解法:

复制代码
class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int n = nums.size();
        if (n == 0) {
            return 0;
        }
        int fast = 1, slow = 1;
        while (fast < n) {
            if (nums[fast] != nums[fast - 1]) {
                nums[slow] = nums[fast];
                ++slow;
            }
            ++fast;
        }
        return slow;
    }
};
相关推荐
Hello娃的4 分钟前
【半导体】肖特基接触AND欧姆接触
人工智能·算法
橘颂TA5 分钟前
【剑斩OFFER】算法的暴力美学——交易逆序对的总数
数据结构·算法·leetcode
xiyuping248 分钟前
强化学习之——moutaincar
算法·机器学习
小画家~10 分钟前
第三十七:类型断言
开发语言·c++·算法·golang
九年义务漏网鲨鱼14 分钟前
【大模型微调】QLoRA微调原理及实战
深度学习·算法·大模型·智能体
2401_8414956414 分钟前
【LeetCode刷题】合并区间
数据结构·python·算法·leetcode·合并·遍历·排序
努力学算法的蒟蒻21 分钟前
day20(12.10)——leetcode面试经典150
面试·职场和发展
xu_yule23 分钟前
数据结构(14)二叉树的模拟实现和便利代码
数据结构·算法
是一个Bug30 分钟前
声明式事务
java·开发语言·面试
代码游侠34 分钟前
应用——文件I/O操作代码
linux·运维·c语言·笔记·学习·算法