leetcode算法26.删除有序数组中的重复项
2023-09-11 14:22:53 时间
👏👏👏
哈喽!大家好,我是【学无止境小奇】,一位热爱分享各种技术的博主!😍😍😍
⭐【学无止境小奇】的创作宗旨:每一条命令都亲自执行过,每一行代码都实际运行过,每一种方法都真实实践过,每一篇文章都良心制作过。✊✊✊
⭐【学无止境小奇】的博客中所有涉及命令、代码的地方,除了提供图片供大家参考,另外会在图片下方提供一份纯文本格式的命令或者代码方便大家粘贴复制直接执行命令或者运行代码。🤝🤝🤝
⭐如果你对技术有着浓厚的兴趣,欢迎关注【学无止境小奇】,欢迎大家和我一起交流。😘😘😘
❤️❤️❤️感谢各位朋友接下来的阅读❤️❤️❤️
一、leetcode算法
1、删除有序数组中的重复项
1.1、题目
给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。
由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。
将最终结果插入 nums 的前 k 个位置后返回 k 。
不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
1.2、思路
思路一:本题可以使用快慢指针的方式解决,用快指针来循环原数组的每一个数,慢指针用来将不重复的数赋值到原来的数组中,快指针始终大于等于慢指针,这样慢指针的赋值不影响快指针的取值。
1.3、答案
class Solution {
public int removeDuplicates(int[] nums) {
int n = nums.length;
//判断数组长度,如果为0,则直接返回0
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;
}
}
相关文章
- 通过 LeetCode 周赛学习二分查找算法
- Leetcode: Range Sum Query 2D - Immutable
- Leetcode: Paint Fence
- [LeetCode] Maximum Gap
- [LeetCode]剑指 Offer 63. 股票的最大利润
- LeetCode 912. 排序数组
- 【Java数据结构与算法】LeetCode面试题02.07 链表相交
- 143、【回溯算法】leetcode ——738. 单调递增的数字:暴力法+贪心法(C++版本)
- 141、【贪心算法】leetcode ——56. 合并区间(区间重叠解法+双指针解法)(C++版本)
- 129、【动态规划/贪心算法】leetcode ——53. 最大子数组和(C++版本)
- 126、【回溯算法】leetcode ——332. 重新安排行程:回溯算法(C++版本)
- 123、【回溯算法】leetcode ——491. 递增子序列:unordered_set去重和int数组去重(C++版本)
- 114、【回溯算法】leetcode ——77. 组合:回溯法+剪枝优化(C++版本)
- 【LeetCode】191. Number of 1 Bits
- 【LeetCode】76. Minimum Window Substring
- 【LeetCode】78. Subsets (2 solutions)
- 【leetcode】92:反转链表 II
- [LeetCode] Toeplitz Matrix 托普利兹矩阵
- [LeetCode] Missing Number 丢失的数字
- leetcode 303. Range Sum Query - Immutable 区域和检索 - 数组不可变(简单)
- leetcode算法145.二叉树的后序遍历
- leetcode算法118.杨辉三角
- leetcode算法104.二叉树的最大深度
- leetcode算法101.对称二叉树
- leetcode算法94.二叉树的中序遍历
- leetcode算法66.加一