1.概述
Golang、C++、Java三種語言在解決一個簡單算法中進行性能對比。
題目:
給你一個數組 nums 和一個值 val,你需要 原地 移除所有數值等於 val 的元素,並返回移除后數組的新長度。
不要使用額外的數組空間,你必須僅使用 O(1) 額外空間並 原地 修改輸入數組。
元素的順序可以改變。你不需要考慮數組中超出新長度后面的元素。
示例 1:
給定 nums = [3,2,2,3], val = 3,
函數應該返回新的長度 2, 並且 nums 中的前兩個元素均為 2。
你不需要考慮數組中超出新長度后面的元素。
2.解法
2.1 Java
1 class Solution { 2 public int removeElement(int[] nums, int val) { 3 int i = 0; 4 int n = nums.length; 5 while (i < n){ 6 if(nums[i] == val){ 7 nums[i] = nums[n-1]; 8 n--; 9 }else{ 10 i++; 11 } 12 } 13 return i; 14 15 } 16 }
2.2 C++
class Solution { public: int removeElement(vector<int>& nums, int val) { int i =0; int n = nums.size(); while(i<n){ if(nums[i] == val){ nums[i] = nums[n-1]; n--; }else{ i++; } } return i; } };
2.3 Golang
func removeElement(nums []int, val int) int { i := 0 n := len(nums) for(i<n){ if(nums[i] == val){ nums[i] = nums[n-1] n-- }else{ i++ } } return i }
3.總結