【力扣】每日一题—第26题,删除有序数组中重复项
题目:
-
给你一个 非严格递增排列 的数组 nums ,请你[ 原地]删除重复出现的元素,使每个元素 只出现一次,返回删除后数组的新长度。元素的 相对顺序应该保持 一致。然后返回 nums中唯一元素的个数。 考虑 nums的唯一元素的数量为 k,你需要做以下事情确保你的题解可以被通过: - 更改数组 `nums` ,使 `nums` 的前 `k` 个元素包含唯一元素,并按照它们最初在 `nums` 中出现的顺序排列。`nums` 的其余元素与 `nums` 的大小不重要。 - 返回 `k` 。
解题思路:
-
因为他给了判题标准,所以我就将思路移到了原来数组中,判断如果有重复的值,就不赋值,继续判断下一个数是否重复,当脱离重复值之后,进行向前赋值,通过while循环不断判断,直到判断结束,返回特定值,
-
最终代码
-
int removeDuplicates(int* nums, int numsSize) { int i=0,j=1; while(--numsSize) { if(nums[i]==nums[j]) { j++; } else { nums[i+1]=nums[j]; i++; j++; } } return i+1; for(int j=0;j<i;j++) { return nums[j]; } }
总结
-
总的来说,跳过重复值将第一个不相同的值向前赋值。
再接再励吧!!!!!!!
脑袋空空。
如果有更好的方案,请赐教,感谢!