题解 | #两数之和#

两数之和

http://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f

两种解题思路

  1. 暴力双遍历比较

    import java.util.*;
    public class Solution {
     /**
      * 
      * @param numbers int整型一维数组 
      * @param target int整型 
      * @return int整型一维数组
      */
     public int[] twoSum (int[] numbers, int target) {
         // write code here
          int[] ans = new int[2];
          for(int index1 = 1; index1 <= numbers.length; index1++){
             for(int index2 = index1 + 1; index2 <= numbers.length; index2++){
                 if(numbers[index1 - 1] + numbers[index2 - 1] == target){
                     ans[0] = index1;
                     ans[1] = index2;
                      return ans;
                 }
            }
          }
         return null;
    
     }
    }
  2. HashMap反向索引快速定位到index,一次遍历就结束了。

         Map<Integer, Integer> map = new HashMap();
         for(int i = 0; i < numbers.length; i++){
             if(map.get(target - numbers[i]) != null){
                 return new int[]{map.get(target - numbers[i]) + 1, i + 1};
             }else{
                 map.put(numbers[i], i);
             }
         }
         return new int[]{-1, -1};
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务