博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从头做leetcode之leetcode 26 删除排序数组中的重复项
阅读量:2436 次
发布时间:2019-05-10

本文共 955 字,大约阅读时间需要 3 分钟。

26.删除排序数组中的重复项

给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

暴力法

  • 从头到尾遍历,如果i+1位置的数与i相同,从i+2开始所有数前提,最后弹出数组末尾元素。(要注意有可能有多次重复,每次删除后i不能+1,也就是要再从同位置检查)
class Solution {
public: int removeDuplicates(vector
& nums) {
if(nums.size()<1) return nums.size(); for(int i=0;i

通过时间:

在这里插入图片描述(恐怖的执行用时)

set

  • 用集合保存出现过的数,存入没出现的数
class Solution {
public: int removeDuplicates(vector
& nums) {
if(nums.size()<1) return nums.size(); int j=0; set
s; for(int i=0;i

通过时间:

在这里插入图片描述

双指针

  • i在结果数组的尾部,j遍历数组,如果遇到不同的数就在i后插入。
class Solution {
public: int removeDuplicates(vector
& nums) {
if (nums.size() < 2) return nums.size(); int i = 0; for (int j = 1; j < nums.size(); j++){
if (nums[i] != nums[j]){
i++; nums[i] = nums[j]; } } return i+1; }};

通过时间:

在这里插入图片描述

转载地址:http://niemb.baihongyu.com/

你可能感兴趣的文章
为 Windows 98 的注册表数据库减肥(转)
查看>>
在 Windows 98 中关闭光盘自动播放功能(转)
查看>>
Windows 98 打印任务的管理(转)
查看>>
Windows 98 网络会议NetMeeting使用大全(转)
查看>>
快速修改所有文件夹的显示属性(转)
查看>>
Windows 98 在没有注册的情况下对系统进行更新(转)
查看>>
同时最小化多个Windows窗口(转)
查看>>
将HTML文档设置为Windows桌面背景(转)
查看>>
Windows 98 注册表的应用(转)
查看>>
Windows 98 将文件的修改日期都调整为同一天(转)
查看>>
启用 Windows 9 8的后台打印功能(转)
查看>>
Windows 98 辅助工具介绍(转)
查看>>
Windows 98 答疑解惑(转)
查看>>
Windows 98 部分特性和功能的使用(转)
查看>>
在桌面上创建屏幕保护程序图标(转)
查看>>
Windows 98 快捷键大放送(转)
查看>>
给 Windows 98 加一道防火墙(转)
查看>>
Windows 98 即插即用功能不是“万能”的(转)
查看>>
重新显示 Windows 98 欢迎对话框(转)
查看>>
用Win Vista RC1检查不兼容的外接附件(转)
查看>>