diff --git a/27-remove-element/27-remove-element.c b/27-remove-element/27-remove-element.c new file mode 100644 index 0000000..6fcad79 --- /dev/null +++ b/27-remove-element/27-remove-element.c @@ -0,0 +1,21 @@ +int removeElement(int* nums, int numsSize, int val){ + if (numsSize == 0) { + return 0; + } + + int backIndex = numsSize - 1; + for (int i = 0; i < backIndex; ++i) { + if (nums[i] == val) { + while (nums[backIndex] == val) { + backIndex--; + if (backIndex == i) { + return nums[backIndex] == val ? backIndex : backIndex + 1; + } + } + nums[i] = nums[backIndex]; + nums[backIndex] = val; + backIndex--; + } + } + return nums[backIndex] == val ? backIndex : backIndex + 1; +} \ No newline at end of file