刷题中,效率好低,哈哈哈 -----1.Two Sum
2019獨角獸企業重金招聘Python工程師標準>>>
寫了三個版本的,第一個版本是javascript使用兩個循環,最不燒腦的方法,后面是看答案寫出來的,不過也是理解以后,自己寫的,挺不錯的,可以換種思路解決問題。
java
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#
public class Solution {
? ? public int[] TwoSum(int[] nums, int target) {
? ? ? ? var map = new Dictionary<int,int>();
? ? ? ? for(var i = 0;i < nums.Length;i++){
????????? ? //? 步驟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;
? ? }
}
總結:
1.C#中字典中的key不可以重復,所以需要進行判斷,當key不存在是,向字典中添加數據。
2.步驟1與步驟2調換順序會引起錯誤,錯誤愿意是:當數組為[3,3]時,下標為0的添加進字典中,步驟2會為true,return i=0,key=0,題目不允許使用同一個數。
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
?
?
轉載于:https://my.oschina.net/u/3141521/blog/1634002
總結
以上是生活随笔為你收集整理的刷题中,效率好低,哈哈哈 -----1.Two Sum的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Memcached的使用
- 下一篇: python单元测试之unittest框