算法—删除有序数组重复项
2023-12-21 06:56:49
删除有序数组重复项
1. 每个元素出现一次
给你一个 非严格递增排列 的数组 nums ,请你原地删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。
public int removeDuplicates(int[] nums) {
// 快慢指针
int slow = 1;
for (int fast = 1; fast < nums.length; fast++){
if(nums[fast] != nums[slow - 1]){ // fast-1 也可
nums[slow++] = nums[fast];
}
}
return slow;
}
2. 每个元素出现两次
给你一个有序数组 nums ,请你原地删除重复出现的元素,使得出现次数超过两次的元素只出现两次,返回删除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组 并在使用 O(1) 额外空间的条件下完成。
public int removeDuplicates(int[] nums) {
if(nums.length <= 2){
return nums.length;
}
// 快慢指针
int slow = 2;
for (int fast = 2; fast < nums.length; fast++){
if(nums[fast] != nums[slow - 2]){
nums[slow++] = nums[fast];
}
}
return slow;
}
文章来源:https://blog.csdn.net/weixin_44465396/article/details/135105454
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!