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; 

            } 

    }

    人真是一种有趣的生物。
  • 相关阅读:
    无root权限安装tmux
    mosquitto_pub和mosquitto_sub 命令参数说明
    安装Mosquitto学习MOTT协议
    Linux之prink原理
    JZ2440支持设备树(1)-添加设备树之后kernel的启动参数跟dts里面不一致
    Linux可以生产uImage
    Ubuntu18.04下make menuconfig缺少ncurses库
    如何打开kernel最开始的打印
    buildroot管理uboot+kernel+rootfs
    STM32L071CBTX操作ECC508
  • 原文地址:https://www.cnblogs.com/yswyzh/p/8656860.html
Copyright © 2011-2022 走看看