• leetCode算法——1TwoSum(两数之和)


    描述:

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

    你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

    实例:

    给定 nums = [2, 7, 11, 15], target = 9
    
    因为 nums[0] + nums[1] = 2 + 7 = 9
    所以返回 [0, 1]

    思路:

    1.两次循环遍历数组中元素,查找合适的值返回对应下标时间复杂度O(n^2)

    2.哈希表存储,依次将数组中的元素的补数(target - nums[i])作为key,下标i作为value存入。并且判断当前元素nums[i]是否已经存储,如果存在也就意味着当前元素肯定是数组中某一元素的补数,则只需返回当前元素下标i和补数下标即可。时间复杂度O(n)

    class Solution {
        public int[] twoSum(int[] nums, int target) {
            //数组长度
            int length = nums.length;
            //两个元素的和
            int sum = 0;
            //返回的数组
            int [] answer = new int[2];
            for(int i = 0;i < length;i++){
                for(int j = i + 1; j < length; j++){
                    if(nums[i] + nums[j] == target){
                        answer[0] = i;
                        answer[1] = j;
                    }
                }
            }
            return answer;
        }
    }
     1 import java.util.HashMap;
     2 import java.util.Map;
     3 class Solution {
     4     public int[] twoSum(int[] nums, int target) {
     5         int [] index = new int[2];
     6         HashMap<Integer,Integer>hashMap = new HashMap<Integer,Integer>();
     7         for(int i = 0; i < nums.length; i++){
     8            
     9             //当前元素在哈希表中,即当前元素是某一个元素的补数
    10             if(hashMap.containsKey(nums[i])){
    11                 //当前元素的下标
    12                 index[0] = i;
    13                 //当前元素补数的下标
    14                 index[1] = hashMap.get(nums[i]);
    15                 return index;
    16             }
    17              //存放每一个元素的补数作为key,该数的下标作为value
    18             hashMap.put(target - nums[i],i);
    19         }
    20     return index;
    21     }
    22 }
  • 相关阅读:
    求概率 Bag of mice CodeForces
    HDU 3853 LOOPS(概率DP)
    HDU 4405 Aeroplane chess (概率DP & 期望)
    求期望 ZOJ 3329 One Person Game
    poj 3774 Scout YYF I (矩阵优化的概率DP)
    codeforces 600D Area of Two Circles' Intersection
    codeforces 600A Extract Numbers
    codeforces 600C Make Palindrome
    POJ
    POJ
  • 原文地址:https://www.cnblogs.com/liushiqiang123/p/11815795.html
Copyright © 2020-2023  润新知