刷題中,效率好低,哈哈哈 -----1.Two Sum

寫了三個版本的,第一個版本是javascript使用兩個循環,最不燒腦的方法,後面是看答案寫出來的,不過也是理解之後,本身寫的,挺不錯的,能夠換種思路解決問題。javascript

javajava

public int[] twoSum(int[] nums, int target) {
        Map<Integer,Integer> map = new HashMap<Integer,Integer>();
        for(int i = 0;i < nums.length;i++){
            map.put(nums[i],i);
        }
        for(int i =0;i < nums.length;i++){
            int num2 = target - nums[i];
            if(map.containsKey(num2) && map.get(num2) != i){
                return new int []{i,map.get(num2)};
            }
        }
        throw new IllegalArgumentException("沒有找到該數組");
    }算法

總結:該方法爲LeetCode給出的答案,我太笨了,根本想不到使用map來作這道題,看到答案後簡直了,哈哈,我太菜了,什麼都不會,map.get(num2) != i 是用來防止使用同一個數數組

 

C#ip

public class Solution {
    public int[] TwoSum(int[] nums, int target) {
        var map = new Dictionary<int,int>();
        for(var i = 0;i < nums.Length;i++){get

            //  步驟1
            if(map.ContainsKey(target - nums[i])){
                return new int [] {i,map[target - nums[i]]};
            }
            //步驟2
            if(!map.ContainsKey(nums[i])){
                map.Add(nums[i],i);
            }
        }
        return null;
    }
}博客

總結:io

1.C#中字典中的key不能夠重複,因此須要進行判斷,當key不存在是,向字典中添加數據。function

2.步驟1與步驟2調換順序會引發錯誤,錯誤願意是:當數組爲[3,3]時,下標爲0的添加進字典中,步驟2會爲true,return i=0,key=0,題目不容許使用同一個數。class

3.網上找的,而後簡單修改的,忘記那個博客看到了的,很差意思啊,哈哈哈

 

javascript

var twoSum = function(nums, target) {
    for(var i = 0;i < nums.length;i++){
       
       for(var j = i + 1;j < nums.length;j++){
       
            if(nums[i] + nums[j] == target){
                
                return  [i,j];
                
            }
       }     
    }
};

 

總結:這個是我本身寫的,哈哈哈,也是最簡單的,根本估計算法讓我寫成這樣,也是丟臉了,不過沒捨得改,也算是處理了問題的一種方法,時間複雜度n2

相關文章
相關標籤/搜索