LeetCode 1 梦开始的地方

简介: LeetCode 1 梦开始的地方

1.1 简单题


1.1.1 LeetCode 1


1.1.1.1 题目


给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。


1.1.1.2 思路分析


(1)遇到这种题目,我的第一想法就是利用for循环来进行暴力破解,运用两层for循环去找到在数组nums中的两个数值,然后里面嵌套一个if函数去进行匹配,最终输出该数组


1.1.1.3 代码实现


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


1.1.1.4 代码详解


(1)首先拿到这个代码,我第一反应就是:欸嘿,这不是跟我写的差不多吗?

(2)由题解可以看到,作者定义了一个n变量用于存储数组nums的长度(其实我感觉没多大必要,也只是对代码美化了一下 )

(3)重点是双层for循环的理解,第一层for循环的前半部分我们可以理解,n - 1这个地方我确实思考了很长时间,为什么不能写n - 1

我的理解是这样的:它这个for循环遍历的是第一个符合target目标值的元素,length是从1开始遍历的,而数组是从0开始计数的,比如arr[0]。然后我们再看第二层for循环,为了避免与第一层for循环产生重复以至于同时选定了一个元素,所以采用i+1的方式去重。这里的i+1读者也可以理解成为数组下标,至于j为什么要小于n,自行体会~

(4)for循环理解完毕之后,接下来就是傻瓜式if判断,如果匹配上了,就创建一个新的一维数组用来存储ij

(5)最终这个twoSum是int类型,所以我们需要一个返回值,由于是个数组,所以返回值类型可以设定为一个空数组(别杠,其它的不行,我试过

相关文章
|
6月前
|
Java 数据库连接
一篇文章讲明白Erlangpoolmanagement
一篇文章讲明白Erlangpoolmanagement
35 2
|
6月前
|
人工智能 Java BI
一篇文章讲明白MartianAddition
一篇文章讲明白MartianAddition
29 0
|
6月前
|
流计算 内存技术
一篇文章讲明白FreescaleKibbletest
一篇文章讲明白FreescaleKibbletest
30 0
|
6月前
|
存储 Java API
一篇文章讲明白luauserdata
一篇文章讲明白luauserdata
210 0
|
6月前
|
druid 数据库
一篇文章讲明白HearthBuddy卡组
一篇文章讲明白HearthBuddy卡组
195 0
LeetCode刷题之合并两个链表(源代码➕讲解)
LeetCode刷题之合并两个链表(源代码➕讲解)
|
存储 Java
一篇文章入门单链表+刷题实践【java实现+详细注释】
一篇文章入门单链表+刷题实践【java实现+详细注释】
10676 2
力扣面试题 08.06. 汉诺塔问题:思路分析+图文详解+代码实现
力扣面试题 08.06. 汉诺塔问题:思路分析+图文详解+代码实现
182 0
|
存储
【leetcode合集】如何知道自己是否掌握了数组与链表?试试这几道题目吧!
【leetcode合集】如何知道自己是否掌握了数组与链表?试试这几道题目吧!
71 0
|
C语言
【leetcode】学了栈和队列却觉得无用武之地?试试这几道题目吧!
【leetcode】学了栈和队列却觉得无用武之地?试试这几道题目吧!
90 0