Leetcode力扣刷题经验总结(数据结构、链表、顺序表)(例:删除有序数组中的重复项)

首先要明白leetcode的尿性....力扣题目的数据范围很抽象。然后记住三句话

第一一句话:

题目放在两个数组中分析(利用数组元素拷贝的思想),再把一个数组看成两个数组取解题。

其次:

如:看好给你的数据范围(防止出现漏掉某种最简单的情况!)

最后:

在数组中修改数据的时候,nums[0] 和 nums[numsSize - 1]        即首个元素和最有一位元素需要检验一下,有没有达到题目的数据要求!

删除有序数组中的重复项

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

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

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

数据范围:

  • 1 <= nums.length <= 3 * 104
  • -104 <= nums[i] <= 104

注意:尿性的来了!nums.length可以为 1 !

因此需要特殊考虑数据的两端范围!!!

题目解析:

我们按照两个数组去分析,可以将第一个数组中没有重复的元素拷贝到第二个数组中!

比如将1 1 2 3 4 5 5 6 7没有重复的元素1 2 3 4 5 6 7拷贝到另一个数组中,达成题目的要求。

然后在一个数组中,完成所有的操作!!!

int removeDuplicates(int* nums, int numsSize) {

    int src = 0;

    int dest = 0;

    if(numsSize == 1)        //需要单独考虑只有一个元素的情况

    {

        return 1;

    }

    while(src < numsSize - 1)

    {

       

        if(nums[src] != nums[src + 1])

        {

            nums[dest++] = nums[src++];

        }

        else

            src++;

       

        if(src == numsSize - 1)

            nums[dest++] = nums[src];

    }

    return dest;        //由于前面的语句nums[dest++],所以此时dest就是新数组的长度

}

最近更新

  1. TCP协议是安全的吗?

    2024-03-11 22:16:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-11 22:16:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-11 22:16:05       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-11 22:16:05       20 阅读

热门阅读

  1. 【Linux-三剑客grep/sed/awk】

    2024-03-11 22:16:05       20 阅读
  2. 设计模式之依赖倒转原则

    2024-03-11 22:16:05       24 阅读
  3. 几行代码帮你搞懂C#中的协变与逆变

    2024-03-11 22:16:05       19 阅读
  4. mysql笔记:12. 数据备份与还原

    2024-03-11 22:16:05       20 阅读
  5. c++中static的作用

    2024-03-11 22:16:05       18 阅读
  6. 【C++】6-10 输出最大值 分数 10

    2024-03-11 22:16:05       24 阅读
  7. VoIP之音视频质量及弱网解决方案

    2024-03-11 22:16:05       22 阅读
  8. 通过Jenkins自动化部署net core 项目

    2024-03-11 22:16:05       23 阅读
  9. 计算机网络面经-拥塞控制的乘法减小和加法增大

    2024-03-11 22:16:05       24 阅读
  10. springboot项目集成Redis,使用redis各项功能

    2024-03-11 22:16:05       22 阅读
  11. 什么是IoC和AOP?

    2024-03-11 22:16:05       21 阅读