删除一个有序数组中的重复元素
时间:2022-06-22
本文章向大家介绍删除一个有序数组中的重复元素,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.net/zy010101/article/details/81302145
题目来自leetcode初级算法的数组
- 方案一
因为这个数组是有序的,所以删除的时候可以这样做。使用最小数字减去1来标记作为被删除掉的元素。然后再把数组中的有效元素移动位置就可以了。使用C语言实现如下:
int removeDuplicates(int* nums, int numsSize) {
int temp = nums[0];
int count = 1;
int j;
if(0 == numsSize) //若没有数组,则返回0
{
count = 0;
}
else
{
for (int i = 1; i < numsSize; i++)
{
if (temp == nums[i])
{
nums[i] = nums[0] - 1; //标记删除
}
else
{
temp = nums[i];
count++; //纪录删除后的元素个数
}
}
for (int i = 1; i < numsSize; i++)
{
if (nums[0] - 1 == nums[i]) //删除掉的元素
{
for (j = i + 1; nums[0] - 1 == nums[j] && j < numsSize; j++);//下一个有效元素
if (nums[0] - 1 != nums[j] && j < numsSize)
{
nums[i] = nums[j]; //移动它
nums[j] = nums[0] - 1;//删除它
}
}
}
}
return count;
}
这样做其实比较麻烦的。我提交了之后看了一下解法,使用的办法比较简单。
- 方案二
只去看它后面的元素是否有和它相同,若有相同则把该元素移动到当前位置的下一个位置即可。然后继续向后找看是否有相同的元素。该算法也是简单的,比较易理解的。
int removeDuplicates(int* nums, int numsSize) {
int i = 1;
if(0 == numsSize)
{
i = 0;
}
else
{
for(int j = 1; j < numsSize; j++)
{
if(nums[j] != nums[i])
{
i++;
nums[i] = nums[j];
}
}
}
return i;
}
- SQL练习之求解填字游戏
- 快速入门系列--WCF--08扩展与新特性
- SQL练习之两个列值的交换
- Parcel,零配置开发 React 应用!
- 像 React Native 开发 APP 一样,用wn-cli 开发 weapp (微信小程序)
- 正则表达式快速入门
- JavaScript之<script>标签简介
- 数控机床数控系统选择4大关键要素
- Python快速入门
- Jquer学习之jQuery(function(){})与(function(){})(jQuery)之间的区别
- 服务端常见性能隐患分享
- ExtJs学习笔记(19)_复杂Form示例
- Linux快速入门01-基础概念
- SQL学习之Insert的特殊用法(插入检索出的数据,表之间的数据复制)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- ArcGIS Enterprise 配置 nginx 反向代理
- 在安卓手机上通过 Termux 运行编译/运行 .NET 应用
- 在 ASP.NET Core 中修改配置文件后自动加载新的配置
- 使用 frp 安全的暴露内网服务
- 在 .NET Core 应用中使用 NHibernate
- 使用 DataX 增量同步数据
- 在虚拟目录中部署 ASP.NET Core 应用
- Docker 容器的健康检查
- 使用 mono 编译 .NET Standard 应用
- 指定 ASP.NET Core 应用监听的端口
- 发布 Angular 应用至生产环境
- 在 NHibernate 中使用 Snow Flake ID
- 在 Angular 应用中创建包含组件
- PostgreSQL 数据库中的窗口函数
- 代码整洁的 JavaScript