zoukankan      html  css  js  c++  java
  • LeetCode算法一题型一以及解答。

    题目:

      给定一个整数数列,找出其中和为特定值的那两个数。

      你可以假设每个输入都只会有一种答案,同样的元素不能被重用。

    分析:

    普遍方法是直接遍历两遍数组,第一遍用target-nums[i],第二遍找nums数组中是否存在target-nums[i]这个数字,找到就返回两个数字组成的数组,这个方法时间复杂度比较大为O(n²)

     

    class Solution {

        public int[] twoSum(int[] nums, int target) {

        int[] result = new int[2];

            for (int i = 0; i < nums.length; i++) { 

                int v = target - nums[i]; 

                for (int j = 0; j < nums.length; j++) { 

                    if (nums[j] == v && j != i){ 

                        result[0] = i; 

                        result[1] = j; 

                        return result; 

                    } 

                } 

            } 

        return result;

        }

    }

     还有可以用哈希表先把数组中的数字和对应的下标存储一遍,即数字作为键,下标作为值,存储,当遍历数组的时候用target-nums[i],得到差k,然后在map中找是否存在 k,找到即返回k所对应的value,也就是所对应的数组下标。这样时间复杂度就为O(n+l),快了好多

       //哈希表存储查找 

        class Solution { 

            public int[] twoSum(int[] nums, int target) { 

                int[] result = new int[2]; 

                Map<Integer,Integer> map = new HashMap<>(); 

                for (int i = 0; i < nums.length; i++) 

                    map.put(nums[i],i); 

         

                for (int i = 0; i < nums.length; i++) { 

                    int v = target - nums[i]; 

                    if (map.containsKey(v) && i != map.get(v)){ 

                        result[0] = i; 

                        result[1] = map.get(v); 

                        return result; 

                    } 

                } 

                return result; 

            } 

    }

    人真是一种有趣的生物。
  • 相关阅读:
    VirtualBox 下USB 设备加载的步骤及无法加载的解决办法
    浅析:setsockopt()改善socket网络程序的健壮性
    减小Gcc编译程序的体积
    linux下查看系统进程占用的句柄数
    Linux下高并发socket最大连接数所受的各种限制
    spring-jpa通过自定义sql执行修改碰到的问题
    阿里巴巴Java开发手册中的DO、DTO、BO、AO、VO、POJO定义
    sql select时增加常量列
    CASE WHEN 及 SELECT CASE WHEN的用法
    MYSQL常见运算符和函数
  • 原文地址:https://www.cnblogs.com/yswyzh/p/8656860.html
Copyright © 2011-2022 走看看