您的位置:首页 > 其它

初级算法-数组-从排序数组中删除重复项

2018-03-29 20:30 274 查看
LeetCode还是很人性化的  用到什么算法竟然还会提示并有百度百科的链接  此题用到了原地算法,就是输出结果覆盖输入结果,节省空间,附上代码,C语言,代码写的渣,还参考了网上的答案,如有哪里需要改进还请斧正!#include <stdio.h>
int removeDuplicates(int* nums, int numsSize)
{
int pre = 0, cur = 0;
if (numsSize == 0)
return 0;
while (cur < numsSize)
{
if (nums[pre] == nums[cur])
{
cur++;
}
else
{
nums[++pre] = nums[cur++];
}
}
return pre + 1;
}
int main()
{
int nums[1000];
int num, i = 0;
while (~scanf("%d", &num))
{
nums[i] = num;
i++;
}
removeDuplicates(nums, i);
}https://blog.csdn.net/lizhidefengzi/article/details/70196058 在大佬博客中又学到了新姿势  c++11又有了for的新用法And to not need the !i check in the loop: int removeDuplicates(vector<int>& nums) { int i = !nums.empty(); for (int n : nums) if (n > nums[i-1]) nums[i++] = n; return i; }
And to not need the !i check in the loop:

int removeDuplicates(vector<int>& nums) {
int i = !nums.empty();
for (int n : nums)
if (n > nums[i-1])
nums[i++] = n;
return i;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: