2018年1月29日 星期一

[27] Remove Element

Remove Duplicates from Sorted Array
給一串數字&指定一個值
需要拿掉所有的這個值
並向前排列......
結果把它想的太難了 囧
好笨 T_____T

void swap(int *a , int *b){
    int tmp;
    tmp = *a;
    *a = *b;
    *b = tmp;
}

int removeElement(int* nums, int numsSize, int val) {
    int head,back,ret=numsSize;
    for (head=0,back=numsSize-1;head<back;)
    {
        if(nums[back]==val)
        {  
            back--;
            ret--;
        }
        if(nums[head]!=val)
        {
            head++;
        }
        if (head>=back)
            break;
        if(nums[head]==val && nums[back]!=val)
        {  
            swap(&nums[head],&nums[back]);
        }
    }
    if(head == back && nums[head]==val)
        ret--;
     
    return ret;
}


其實只要這樣就好了:
int removeElement(int* nums, int numsSize, int val) {
    int i,index=0;
    for(i=0;i<numsSize;i++)
    {
        if(nums[i]!=val)
            nums[index++] = nums[i];
    }
    return index;
}

沒有留言:

張貼留言