码迷,mamicode.com
首页 > 其他好文 > 详细

Remove Element

时间:2015-09-23 10:29:16      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:

一、题目

Given an array and a value, remove all instances of that value in place and return the new length.

The order of elements can be changed. It doesn‘t matter what you leave beyond the new length.

给出一个数组和一个值,在数组中移除这个值,并返回移除后的数组长度;移除过程中,数组剩余元素的排列方式可以改变

二、自己的解答

定义两个标号,i和j,分别指向数组的前后,当两个标号在一起时,判断最后一次

int removeElement(int* nums, int numsSize, int val) {
    int i = 0;
   int j = 0;
    int n = 0; 
    while(i <= numsSize - j - 1)            //当两个指针指向同一个值后结束
    {
        if(nums[i] == val)
           {
              nums[i] = nums[numsSize - j - 1];
              j++;
              n++;
              continue;
           }
         else
               i++;
    }
    return numsSize - n;
}

三、网上解答

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
         int cnt=0;  
    for(int i=0; i<nums.size(); i++)  
    {  
        if(nums[i]==val)
            cnt++;  
        else if (cnt>0)  
        {  
            nums[i-cnt] = nums[i];      //把后面的值一个个的赋值到前面来
        }  
    }  
    return nums.size()-cnt;  
    }
};
  • 个人觉得这个算法会比自己的时间复杂度高一些,因为如果出现了一个需要删除的数,则后面每个值都需要移动

Remove Element

标签:

原文地址:http://www.cnblogs.com/dylqt/p/4831201.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!