diff --git a/27-remove-element/27-remove-element.java b/27-remove-element/27-remove-element.java new file mode 100644 index 0000000..6bc3146 --- /dev/null +++ b/27-remove-element/27-remove-element.java @@ -0,0 +1,23 @@ +class Solution { + public int removeElement(int[] nums, int val) { + if (nums.length == 0) { + return 0; + } + + int backIndex = nums.length - 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