LeetCode 27

≡放荡痞女 提交于 2019-11-29 11:10:17
void swap(int *nums, int first, int last)
{
        int k;

        k = *(nums + first);
        *(nums + first) = *(nums + last); 
        *(nums + last) = k;
}

int removeElement(int* nums, int numsSize, int val)
{
        int first, last, num = 0;
        
        if (!nums || !numsSize)    
                return 0;
        
        first = 0;
        last = numsSize - 1; 
        
        do {
                while (first != numsSize && *(nums + first) != val)
                        first++;
                       
                while (last != -1 && *(nums + last) == val) {
                        last--;
                        num++;
                }
                
                if (first < last) {
                        swap(nums, first, last);
                        first++;
                        last--;
                        num++;
                }
                       
        } while (first <= last);
        
        return numsSize - num;
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!