前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode第一题

LeetCode第一题

作者头像
杨小杰
发布2019-06-03 15:23:37
4540
发布2019-06-03 15:23:37
举报

leetCode第一题

题目要求

为了观看方便,这里访问的是leetcode中文版地址

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

普通解决思路

将数组变量两次,相加判断是否等于传过来的值,如果等于,返回下标 自己写的代码,如果有错误请指出,谢谢

package com.leetcode.firstquestion.one;

import java.util.Arrays;

/**
 * @program: test
 * @description: 两数之和 给定一个整数数组 nums 和一个目标值 target,
 *                       请你在该数组中找出和为目标值的那
 *                       两个 整数,并返回他们的数组下标。
 * @author: Mr.Yang
 * @create: 2019-05-08 09:20
 **/
public class Solution {
    public int[] twoSum(int[] nums, int target) {
        int[] ints = new int[2];
        int indexOne=0;
        int indexTwo=0;
        boolean flag=false;
        for(int x=0;x<nums.length;x++){
            for(int y=x+1;y<nums.length;y++){
                if((nums[x]+nums[y])==target){
                    indexOne=x;
                    indexTwo=y;
                    flag=true;
                    break;
                }
            }
            if(flag){
                break;
            }
        }
        ints[0]=indexOne;
        ints[1]=indexTwo;
        return ints;
    }

    public static void main(String[] args) {
        int[] ints = {1, 2, 3, 4, 5, 6, 7, 8, 9};
        Solution solution = new Solution();
        int[] ints1 = solution.twoSum(ints, 9);
        System.out.println(Arrays.toString(ints1));
    }
}

网上流传思路,使用HashMap来处理

将数组的遍历值当作key(为了存取好处理,所以将数组的遍历值当作key),索引当作value来存储。

package com.leetcode.firstquestion.two;

import java.util.Arrays;
import java.util.HashMap;

/**
 * @program: test
 * @description: 两数之和 给定一个整数数组 nums 和一个目标值 target,
 *                       请你在该数组中找出和为目标值的那
 *                       两个 整数,并返回他们的数组下标。
 * @author: Mr.Yang
 * @create: 2019-05-08 09:20
 **/
public class Solution {
    public int[] twoSum(int[] nums, int target) {
        HashMap<Object, Integer> argsMap = new HashMap<>();
        for(int i=0;i<nums.length;i++){
            int value = nums[i];
            if(argsMap.containsKey(target - value)){
                return new int[]{i, argsMap.get(target - value)};
            }
            argsMap.put(value,i);
        }
        return null;
    }

    public static void main(String[] args) {
        int[] ints = {1, 2, 3, 4, 5, 6, 7, 8, 9};
        Solution solution = new Solution();
        int[] ints1 = solution.twoSum(ints, 9);
        System.out.println(Arrays.toString(ints1));
    }
}
  • 相比较自己写的那个确实要好得多,自己那个需要遍历两次,简单时间复杂度O(n2)
  • 网上的方法,简单时间复杂度O(n)

大家可以关注我的公众号-JAVA知识总结与分享,我们一起来学习,共同进步

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA知识总结与分享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目要求
  • 普通解决思路
  • 网上流传思路,使用HashMap来处理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档