给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。
考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:
- 更改数组
nums,使nums的前k个元素包含唯一元素,并按照它们最初在nums中出现的顺序排列。nums的其余元素与nums的大小不重要。 - 返回
k。
//第一遍循环遍历所有元素,第二遍循环遍历位于当前元素后面且大于当前元素,找到则退出第二遍循环
public class Solution {
public int RemoveDuplicates(int[] nums) {
int a,b;
for(a=0;a<nums.Length-1;a++){
for(b=a+1;b<nums.Length;b++){
if(nums[a]<nums[b]){
nums[a+1]=nums[b];
break;
}
}
//如果第二遍循环到达末尾,仍未找到比当前元素还大的元素,则结束,返回已经找到的元素个数
//a+1是因为a=0开始
if(b==nums.Length){
return a+1;
}
}
//如果数组是1,2,3...这样的开始就没有重复的话,因为上方的break,b不能等于nums.Length
//所有这里需要返回a+1(此时是全部元素)
return a+1;
}
}
博客围绕升序排列数组展开,要求原地删除重复出现的元素,使每个元素仅出现一次,保持元素相对顺序一致,并返回删除后数组的新长度,需更改数组让前若干个元素为唯一元素。
407

被折叠的 条评论
为什么被折叠?



