LeetCode_Easy心得:26. Remove Duplicates from Sorted Array(C语言)

来源:互联网 发布:比特币实时行情数据 编辑:程序博客网 时间:2024/06/04 20:11

Given a sorted array, remove the duplicates in place such that each element appear onlyonce and return the new length.

Do not allocate extra space for another array, you must do this in place with constant memory.

/** 题目分析:要求输入一组有序数组,将数组中重复部分删除,也就是说每个数组元素只能出现一次,最后返回该数组的数组长度。同时,不能创建新的数组变量,必须要在输入的数组中操作。 */

Example:

Given input array nums = [1,1,2];

return length=2;

/** 代码思路:①因为要求不可以创建新数组变量,所以就创建两个int表示数组下标,用来操作输入数组内部元素,下标分别是 length=0和 i=0;②从下标0开始比较数组内数字;③当出现重复数时, i下标向后移动一位,直至与 length下标数字数字不重复;④此时,将 i位置数字赋到 length位置处, length下标向后移动一位;⑤重复步骤③,直至数组最后一个数字比完;⑥最后需要返回的是不重复数组的长度,因为当前length表示的数组下标,而长度则需要将下标+1, 因此函数返回值是 length+1。 */

Example:

nums[i] = {1, 1, 2, 3, 3, 3, 4, 5};

nums[length] = {1, 2, 3, 4, 5};        //因为length只能取到4,下标5后面的数组间接滤除了;

//此时,完整的nums[] = {1, 2, 3, 4, 5, 3, 4, 5}; 最后返回的 length = 4+1;

int removeDuplicates(int nums[], int numsSize) {    int i, length=0;       //下标 i和 length;    if(numsSize <= 1)   //如果数组长度小于等于1,直接返回;        return numsSize;    for(i=1; i<numsSize; i++){        if(nums[length] != nums[i]){            length ++;                     //len先自增,因为数组长度已经大于1了;            nums[length] = nums[i];        //将 i位置数赋给length位置;        }    }    return length + 1;                     //最后因为是返回长度,所以 +1;}

//LeetCode运行时间:14ms ± 2ms;

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 陌陌不能发动态怎么办 人脸识别过不了怎么办 冷光美白牙齿酸怎么办 冷光美白牙齿疼怎么办 上火长痘怎么办最有效 2岁半宝宝上火怎么办 8个月的宝宝上火怎么办 牙齿上火了很疼怎么办 长智慧齿牙龈痛怎么办 智慧牙蛀牙好痛怎么办 一上火智齿就疼怎么办 智齿发炎了很疼怎么办 长个智齿疼死了怎么办 智齿发炎脸肿了怎么办 长智齿的时候疼怎么办 长智齿耳朵也疼怎么办 长智齿疼的厉害怎么办 智齿顶的肉疼怎么办 怀孕了老是牙疼怎么办 怀孕8个月牙痛怎么办 孕晚期上火牙疼怎么办 怀孕了牙疼怎么办啊 孕晚期牙疼怎么办妙招 孕晚期牙疼上火怎么办 孕晚期智齿牙疼怎么办 牙齿张智齿很痛怎么办 30岁长智齿牙疼怎么办 我长智齿牙龈痛怎么办 出智齿引起牙龈肿痛怎么办 要长智齿牙肉痛怎么办 牙齿肿了有脓包怎么办 牙肉发炎有脓包怎么办 拔智齿伤了神经怎么办 牙下面的肉疼该怎么办 后面牙突然好疼怎么办 拔智齿后的牙洞怎么办 换牙期牙齿长歪怎么办 小孩子牙齿长歪了怎么办 换牙门牙长歪了怎么办 宝宝牙齿长歪了怎么办 小孩的牙齿长歪了怎么办