leetcode 0027 RemoveElement

原创 2018年04月15日 09:52:34
题目描述:
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

示例 1:
给定 nums = [3,2,2,3], val = 3,
函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。
你不需要考虑数组中超出新长度后面的元素。

示例 2:
给定 nums = [0,1,2,2,3,0,4,2], val = 2,
函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。
注意这五个元素可为任意顺序。
你不需要考虑数组中超出新长度后面的元素。

说明:
为什么返回数值是整数,但输出的答案是数组呢?
请注意,输入数组是以“引用”方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。
你可以想象内部操作如下:
// nums 是以“引用”方式传递的。也就是说,不对实参作任何拷贝
int len = removeElement(nums, val);
// 在函数里修改输入数组对于调用者是可见的。
// 根据你的函数返回的长度, 它会打印出数组中该长度范围内的所有元素。
for (int i = 0; i < len; i++) {
    print(nums[i]);
}
#include<stdio.h>

int removeElement(int* nums, int numsSize, int val);

int main(void) {
    int nums[] = {0, 1, 2, 2, 3, 0, 4, 2};
    int val = 2, i;
    int len = removeElement(nums, 8, val);

    for (i = 0; i < len; i++) {
        printf("%d ", nums[i]);
    }
    printf("%d ", len);
	
    return 0;
}

int removeElement(int* nums, int numsSize, int val) {
    int len = numsSize;
    int k = 0, i;

    for(i = 0; i < numsSize; i++) {
        if(*(nums + i) == val) {
            k++;
            len--;
        } else {
            *(nums + i - k) = *(nums + i);
        }
    }

    return len;
}

LeetCode | Remove Element

题目: Given an array and a value, remove all instances of that value in place and return the new len...
  • lanxu_yy
  • lanxu_yy
  • 2013-09-14 17:17:25
  • 3690

leetcode:Remove Element (删除给定元素)【面试算法题】

题目: Given an array and a value, remove all instances of that value in place and return the new lengt...
  • zhang9801050
  • zhang9801050
  • 2013-10-20 19:13:47
  • 13563

关于LeetCode中Remove Element一题的理解

题目如下: Given an array and a value, remove all instances of that value in place and return the ne...
  • zsy112371
  • zsy112371
  • 2016-09-02 21:05:59
  • 547

Leetcode_027 Remove Element

Question: Given an array and a value, remove all instances of that value in place and return the n...
  • yzhang6_10
  • yzhang6_10
  • 2015-05-31 11:50:46
  • 496

LeetCode 27 Remove Element (C,C++,Java,Python)

Problem: Given an array and a value, remove all instances of that value in place and return the...
  • runningtortoises
  • runningtortoises
  • 2015-05-11 20:40:46
  • 1425

leetCode 27.Remove Element (删除元素) 解题思路和方法

Remove Element  Given an array and a value, remove all instances of that value in place and ret...
  • xygy8860
  • xygy8860
  • 2015-07-07 20:32:52
  • 814

LeetCode之RemoveElement

题目: Given an array and a value, remove all instances of that value in place and return the new lengt...
  • z702143700
  • z702143700
  • 2015-07-18 10:18:30
  • 439

LeetCode 之RemoveElement

题目: Given an array and a value, remove all instances of that value in place and return the new lengt...
  • u010653319
  • u010653319
  • 2015-01-07 15:47:54
  • 257

(Java)LeetCode-27. Remove Element

Given an array and a value, remove all instances of that value in place and return the new length. ...
  • u012848330
  • u012848330
  • 2016-06-08 15:16:59
  • 753

LeetCode - RemoveElement

/**  * 问:给出一个数组,去除指定的某个元素,并返回新数组的长度。  * 解:  * 1、返回长度很简单,只有出现一个Element,length--即可,难点是如何删除元素。  * 2...
  • ZeroLhp
  • ZeroLhp
  • 2016-05-29 08:24:50
  • 109
收藏助手
不良信息举报
您举报文章:leetcode 0027 RemoveElement
举报原因:
原因补充:

(最多只允许输入30个字)