LeetCode算法一题型一以及解答。

摘要:
您可以假设每个输入只有一个答案,并且不能重复使用同一个元素。分析:常见的方法是直接遍历数组两次,第一次使用目标nums[i],第二次查找nums数组中是否存在目标nums[i],如果找到则返回由两个数字组成的数组,此方法的时间复杂度相对较大:OclassSolution{public〔〕twoSum{int〔〕result=newint〔2〕;for{intv=target numbers〔i〕;for{if(nums〔j〕=v&&j!因此时间复杂度为O(n+l),这要快得多。//哈希表存储查找类解决方案{public〔〕twoSum{int〔〕result=newint〔1〕;Map<Integer,Integer>Map=newHashMap<>();formap.put;for{intv=targetnumbers〔1〕; 如果(map.containsKey(v)&&i!

题目:

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

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

分析:

普遍方法是直接遍历两遍数组,第一遍用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; 

        } 

}

免责声明:文章转载自《LeetCode算法一题型一以及解答。》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇loadrunner乱码问题解决办法【大数据和云计算技术社区】分库分表技术演进&amp;amp;最佳实践笔记下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Zabbix报错信息及遇到的问题

no#范围:128K-2G#默认值:以字节为单位。#机器历史数据请求的共享内存。#设置为0禁用值缓存。##强制:无#范围:...

java报表实现excel一样冻结表头的功能

增加了几个新的指标,后台sql改了,拿过来只须在一个dao类中修改就足够了,可恨的是客户又提出来改报表表样,加个类似excel冻结表头的功能。...

SecureCRT优化调整、永久设置、保护眼睛和配色方案

您可以根据个人喜好调整字体大小。我已经习惯了4号字体。到目前为止,SecureCRT优化已经完成。...

Oracle 12c新特性(For DBA)

2: Oracle12cIn-MemoryOracle12cIn-Memory提供了一种独特的双格式体系结构,它可以使用传统的行格式和新的内存列格式同时在内存中存储表。与其他NOSQL分片结构相比,OracleSharding提供了优异的运行时性能和更简单的生命周期管理。OracleSharding使用GDS体系结构自动部署和管理分片和复制技术。GDS还提供...

Python-正则

,三:量词*重复0次或多次{0,}+重复一次或多次{1,}?重复0或1次{1,0}{n}重复n次{n}{n,}重复n次,或更多次{n,m}将n次重复到m次Escape:如果字符串中有特殊字符要匹配,请在常规字符和字符串前面添加r。如果特殊字符在字符组中,则它们是匹配的特殊字符,但为了记忆,匹配时会转义所有特殊字符。...

uniapp之页面间传递和接收数组

uni-app如何在页面之前发送和传递数组?如果阵列是直接发送和传递的,则收到的消息如下所示。无法获取更多的对象值。接收数组对象的参数。您可以首先将数组转换为JSON字符串,然后在将其传递到页面后将其解析为JavaScript对象。...