详细见:leetcode.com/problems/remove-element/
Java Solution: github
package leetcode;
public class P027_RemoveElement {
public static void main(String[] args) {
int[] nums = {1, 2, 3, 4, 3, 2, 1, 2, 3, 4, 3};
int ans = new Solution1().removeElement(nums, 3);
for (int i = 0; i != ans; i ++)
System.out.println(nums[i]);
}
/*
* 1 ms
* 3.96%
*/
static class Solution1 {
public int removeElement(int[] nums, int val) {
if (nums == null || nums.length == 0)
return 0;
int step = 0;
for (int i = 0; i != nums.length; i ++) {
if (nums[i] == val) {
step ++;
} else {
nums[i - step] = nums[i];
}
}
return nums.length - step;
}
}
}
/*
url: leetcode.com/problems/remove-element/
6ms 2.27%
*/
#include <stdio.h>
#include <stdlib.h>
int removeElement(int* nums, int numsSize, int val) {
int i = 0, j = 0, count = 0;
for (j = 0; j < numsSize; j ++)
if (*(nums + j) != val) {
*(nums + (i ++)) = *(nums + j);
count ++;
}
return count;
}
void print_array(int * nums, int numsSize) {
int i = 0;
for (i = 0; i < numsSize; i ++)
printf("%d ", *(nums + i));
printf("\r\n");
}
int main() {
int nums[] = {3,2,2,3};
int numsSize = 4;
int val = 3;
print_array(nums, removeElement(nums, numsSize, val));
}
Python Solution: github
#coding=utf-8
'''
url: leetcode.com/problems/remove-element/
@author: zxwtry
@email: zxwtry@qq.com
@date: 2017年3月31日
@details: Solution: 55ms 34.34%
'''
class Solution(object):
def removeElement(self, nums, val):
"""
:type nums: List[int]
:type val: int
:rtype: int
"""
i = 0
for j in range(len(nums)):
if nums[j] != val:
nums[i] = nums[j]
i += 1
return i
if __name__ == "__main__":
nums = [3, 2, 2, 3]
v = 3
sol = Solution()
n = sol.removeElement(nums, v)
val = []
for i in range(n):
val.append(nums[i])
print(" %d" * n % tuple(val))