27. Remove Element

題目

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

Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.

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

Example:

Given nums = [3,2,2,3], val = 3,

Your function should return length = 2, with the first two elements of nums being 2.

翻譯

給予一個陣列和一個數值,移除陣列中所有符合該數值的數,並只能在原陣列中操作,並回傳新的長度。

不要配置新的記憶體空間給於其他陣列,你必須只能在原陣列中操作,空間複雜度 O(1)。

陣列中的元素可以隨意排序,且新的長度對原本的陣列不會有所影響。

範例:

輸入 nums = [3,2,2,3], val = 3

你的函式必須回傳長度等於2,代表前兩個數字[3,3]

解法

Java

Solution 1.

這題類似 26. Remove Duplicates from Sorted Array,一樣在不配置任何記憶體空間狀態下將指定數字 val 從原本陣列中移除。

  • 陣列走訪
  • Run Time: 9 ms
  • 時間複雜度: O(n)
  • 空間複雜度: O(1)
class Solution {
    public int removeElement(int[] nums, int val) {
        int index=0;
            for(int i=0;i<nums.length;i++) {
                    if(nums[i]!=val) {
                        nums[index++]=nums[i];
                    }
            }
            return index;
    }
}

C

Solution 1.

這題類似 26. Remove Duplicates from Sorted Array,一樣在不配置任何記憶體空間狀態下將指定數字 val 從原本陣列中移除。

  • 陣列走訪
  • Run Time: 3 ms
  • 時間複雜度: O(n)
  • 空間複雜度: O(1)
int removeElement(int *nums, int numsSize, int val){
  int index=0,i=0;
  for(;i<numsSize;i++){
    if(nums[i]!=val){
      nums[index++]=nums[i];
    }
  }
  return index;
}

results matching ""

    No results matching ""