Golang,C++,Java三种语言的简单对比


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.总结

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM