leetcode 01两数之和 小白思路总结java

题目描述:

怎么思考?(重点)

  • 首先框架大体:要想到两个for循环(i和j)遍历数组中的元素,然后内外层循环遍历相加得到target值,理想情况:举例示例1,当i==0并且j==1时成立,2+7=9也就是target值满足,根据题目返回对应数组下标(思考如何返回下标?)

整体思路示意图

  • 其次会发现,想法是对的,但是要扣细节。如示例1情况,问题1:题目明确写了数组中同一个元素在答案里不能重复出现:,但是i和j都从0开始的话势必会重复遍历当前数字。例:当i=0,j=0时,会遍历数组中的2,当i=1,j=0时,又会遍历一次2,题目明确不允许,如何避免?
  • 问题2:找出了那两个值如何返回所对应的i和j下标?
  • 针对上面两个问题解决方法:问题1:让每次j遍历时都比i往后一位数,也就是j=i+1,这样就不会重复遍历之前遍历过的元素
  • 问题2:这个就比较简单了,if判断是否等于target值时,直接返回一个新建数组(可以这么写)
    return new int[]{i,j}

    大概思路就是这样,暴力解决法会有很多漏洞,所以一定要多思考特殊情况或者题目给的限制约束,全代码:

class Solution {

    public int[] twoSum(int[] nums, int target) {
        for (int i=0;i<nums.length;i++){
            for (int j=i+1;j<nums.length;j++){
                if(nums[i]+nums[j]==target){
                    return new int[]{i,j};
                }
            }
        }
        return null;
    }
}

* int[] nums, int target 题目会在函数输入一个数组和一个整形数

* nums.length数组的整体长度(PS:等于数组下标+1)

* Q:示例一情况下,担心2和7时不是和7和2重复了吗?A:当i遍历到元素2,j遍历到元素7时是立马返回的,立马执行,不会再给i机会遍历到7的

新手一定要注意看清题目给的返回条件哦,这题的返回条件是int[] twoSum,也就是说,最后结果也要返回一个int类的数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值