【每天一题】LeetCode 0026. 删除排序数组中的重复项
开源地址:https://github.com/jiauzhang/algorithms
题目描述
/*
* https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array
* 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,
* 返回移除后数组的新长度。
* 不要使用额外的数组空间,你必须在原地修改输入数组
* 并在使用 O(1) 额外空间的条件下完成。
*/
示例
/*
* 示例 1:
* 给定数组 nums = [1,1,2],
* 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。
* 你不需要考虑数组中超出新长度后面的元素。
*
* 示例 2:
* 给定 nums = [0,0,1,1,1,2,2,3,3,4],
* 函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。
*
* 注:
* 你不需要考虑数组中超出新长度后面的元素。
*/
解题思路
/*
* 1. 题目的意思其实就是将不同的数字向前紧密排列,因此涉及到下一个新的数字
* 放在哪里,即需要一个索引值指定,还需要知道最新的数字在哪里,即又需要
* 一个索引值
* 2. 因此使用两个索引值,相同时一个前移、一个不动;
* 遇到不同时,前边的指针前移并将新的数字复制过来,然后走的快的
* 指针继续前移,如此反复即可
*/
示例代码
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if (nums.size() <= 1)
return nums.size();
int head = 0, tail = 0;
while (tail < nums.size()) {
if (nums[head] == nums[tail]) {
tail++;
} else {
head++;
if (head < tail) {
nums[head] = nums[tail];
tail++;
}
}
}
nums.resize(head+1);
return head+1;
}
};
【每天一题】LeetCode 0026. 删除排序数组中的重复项的更多相关文章
- 前端与算法 leetcode 26. 删除排序数组中的重复项
目录 # 前端与算法 leetcode 26. 删除排序数组中的重复项 题目描述 概要 提示 解析 算法 # 前端与算法 leetcode 26. 删除排序数组中的重复项 题目描述 26. 删除排序数 ...
- LeetCode 80. 删除排序数组中的重复项 II
LeetCode 80. 删除排序数组中的重复项 II
- Java实现 LeetCode 26 删除排序数组中的重复项
26. 删除排序数组中的重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) ...
- Java实现 LeetCode 80 删除排序数组中的重复项 II(二)
80. 删除排序数组中的重复项 II 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O ...
- Leetcode题库——26.删除排序数组中的重复项
@author: ZZQ @software: PyCharm @file: removeDuplicates.py @time: 2018/9/23 13:51 要求: 给定一个排序数组,你需要在原 ...
- 【LeetCode】删除排序数组中的重复项&&移除特定元素【双指针,原地算法】
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 示例 1 ...
- 领扣(LeetCode)删除排序数组中的重复项 个人题解
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 示例 1 ...
- [LeetCode]26. 删除排序数组中的重复项(数组,双指针)
题目 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下 ...
- [LeetCode] 26. 删除排序数组中的重复项
题目链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/ 题目描述: 给定一个排序数组,你需要在原地删除重复 ...
随机推荐
- 上传一个项目到GitHub
在github上创建hello的仓库 上传本地项目文件 echo "# hello" >> README.md git init git add README.md g ...
- 在开发Thinkphp5.0智慧软文个人微信个人支付宝企业支付宝接口时遇到的坑
在开发Thinkphp5.0智慧软文个人微信个人支付宝企业支付宝接口时遇到回调后提示成功但是不能自动充值的情况,现在记录一下: 两种情况 1.个人支付宝 个人微信遇到的情况 因为个人支付宝 个人微信 ...
- AQS系列(二)- ReentrantLock的释放锁
前言 在AQS系列(一)中我们一起看了ReentrantLock加锁的过程,今天我们看释放锁,看看老Lea那冷峻的思维是如何在代码中笔走龙蛇的. 正文 追踪unlock方法: public void ...
- Android多图选择
多图选择是Android中一个常用的功能,用户可以拍照或者批量选择图片上传,还是国际惯例,先看下效果图,demo地址我会放到文章末尾. 经过对比,这里我选择了一个第三方开源库PictureSelect ...
- iOS App Extension入门
转自简书:http://www.jianshu.com/p/8cf08db29356 iOS 10推出了很多新功能,其中有几个高调的变化:通知栏更加实用,电话可以防骚扰,iMessage变得更加有 ...
- IOS UIAlertView(警告框)方法总结
转自:my.oschina.net/u/2340880/blog/408873?p=1 IOS中UIAlertView(警告框)常用方法总结 一.初始化方法 - (instancetype)initW ...
- 关于<form> autocomplete 属性
基本知识 值 描述 on 默认.规定启用自动完成功能. off 规定禁用自动完成功能. autocomplete 属性规定表单是否应该启用自动完成功能. 自动完成允许浏览器预测对字段的输入.当用户在字 ...
- HDU 2444 The Accomodation of Students (二分图存在的判定以及最大匹配数)
There are a group of students. Some of them may know each other, while others don't. For example, A ...
- Selenium自动化面试题
(1)selenium的工作原理? ① 脚本启动driver ② driver去驱动浏览器作为远程服务器 ③ 执行脚本发送请求 ④ 服务器解析请求作出相应操作,并返回给客户端(脚本) ( ...
- 使用iCamera 测试mt9d111 200w高分辨率摄像头小结
使用iCamera 测试mt9d111 200w高分辨率摄像头小结 先看下产品特性 安装效果 根据前面博客的经验,该摄像头,默认配置即有输出,分辨率为800*600,yuv 于是可以写 如果使用默认配 ...