LeetCode 简单题分享(1)

两数之和

题目:

LeetCode 简单题分享(1)_第1张图片

简单来说,这道题的思路有两种,第一种就是很暴力的双重循环,拿到第一个数,然后去比较第二个数加起来是否能达到我们的target,如果相等,就找到了,时间复杂度会比较高。

代码如下:

/*
*暴力双for循环解题
*/
class Solution {
    public int[] twoSum(int[] nums, int target) {
        //定义一个总长度
        int totalLocation = nums.length;
        //定义第一个数循环,第一个数的地址小于总数,位置+1
        for(int firstNumLocation=0 ; firstNumLocation

leetcode运行结果:

LeetCode 简单题分享(1)_第2张图片

 

除了这种暴力解法,我们还可以换一个思路,如果时间太长,我们一般会比较倾向于用空间来换取时间。所以为了避免多次的重复比较,一个很好的数据结构就出来了,哈希表。我们每比较一次,不对的话就把数据放进哈希表中,再次取用的时候就可以从表中用hashMap.containsKey()方法进行比较。我们都知道,搜索哈希表的时间复杂度很低的,所以我选择牺牲一点空间来换取时间。

代码如下:

/*
*哈希表解题
*/
class Solution {
    public int[] twoSum(int[] nums, int target) {
        //设置一个哈希表
        Map hashMap = new HashMap();
        //循环判断
        for(int i =0; i

leetcode运行结果:

LeetCode 简单题分享(1)_第3张图片

 事实也证明这个方法再时间上是有了质的飞跃。

以上就是我关于两数之和问题的思路,欢迎交流。

你可能感兴趣的:(leetcode,java,leetcode)