파이썬 대 Golang 대 러스트

테스트 시나리오



Leetcode에서 Two sum problem을 가져왔습니다.

문제 진술:

Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

You can return the answer in any order.

Example 1:

Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].

Example 2:

Input: nums = [3,2,4], target = 6
Output: [1,2]

Example 3:

Input: nums = [3,3], target = 6
Output: [0,1]

Constraints:

2 <= nums.length <= 104
-109 <= nums[i] <= 109
-109 <= target <= 109
Only one valid answer exists.


구현



세 가지 언어 모두에서 이 문제를 해결하기 위해 해시 맵을 사용했습니다.

파이썬




class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        hash_table = {}
        for i, num in enumerate(nums):
            target_num = target - num
            if num in hash_table:
                return i, hash_table[num]
            else:
                hash_table[target_num] = i
        return None


파이썬 통계


  • 실행 시간: 40ms
  • 메모리 사용량: 14.5MB

  • 골랑




    func twoSum(nums []int, target int) []int {
        hashMap := make(map[int] int)
        for i := 0; i < len(nums); i++{
            if _, found := hashMap[nums[i]]; found {
                ans := []int{i, hashMap[nums[i]]}
                return ans
            } else {
                hashMap[target- nums[i]]= i
            }
        }
        return nil
    }
    


    골랑 통계


  • 실행 시간: 4ms
  • 메모리 사용량: 4.3MB




  • use std::collections::HashMap;
    impl Solution {
        pub fn two_sum(nums: Vec<i32>, target: i32) -> Vec<i32> {
            let mut hash_table: HashMap<i32, i32> = HashMap::new();
        for i in 0..nums.len() {
            // println!("Processing number: {}", nums[i]);
            match hash_table.get(&nums[i]){
                Some(&x) => return vec![x, i as i32],
                None => hash_table.insert(target - nums[i], i as i32),
            };
        };
        return vec![-1, -1]
        }
    }
    


    녹 통계


  • 실행 시간: 2ms
  • 메모리 사용량: 2.2MB

  • 결론


  • 결과에 따르면 Rust는 메모리를 가장 적게 사용했고 세 가지 모두에서 가장 빠릅니다.

  • 더 많은 통찰력을 얻으려면 나를 따르십시오.
    원본 게시물: Hashnode

    좋은 웹페이지 즐겨찾기