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类型,所以我们需要一个返回值,由于是个数组,所以返回值类型可以设定为一个空数组(别杠,其它的不行,我试过

相关文章
|
8月前
|
存储 算法 数据挖掘
【模拟面试问答】力扣165题:比较版本号(逐个比较与双指针法详解及模拟面试问答)
【模拟面试问答】力扣165题:比较版本号(逐个比较与双指针法详解及模拟面试问答)
LeetCode刷题之合并两个链表(源代码➕讲解)
LeetCode刷题之合并两个链表(源代码➕讲解)
LeetCode刷题之 存在重复元素(题目分析➕源代码)
LeetCode刷题之 存在重复元素(题目分析➕源代码)
|
存储 Java
一篇文章入门单链表+刷题实践【java实现+详细注释】
一篇文章入门单链表+刷题实践【java实现+详细注释】
10685 2
力扣面试题 08.06. 汉诺塔问题:思路分析+图文详解+代码实现
力扣面试题 08.06. 汉诺塔问题:思路分析+图文详解+代码实现
203 0
C/C++ leetcode刷题的各种小tips记录
C/C++ leetcode刷题的各种小tips记录
151 0
leetcode14(弄懂了一个知识点)
这个题有一点细节,所以就记录一下(可能不一定准确)
84 0
|
存储
【leetcode合集】如何知道自己是否掌握了数组与链表?试试这几道题目吧!
【leetcode合集】如何知道自己是否掌握了数组与链表?试试这几道题目吧!
85 0
|
C语言
【leetcode】学了栈和队列却觉得无用武之地?试试这几道题目吧!
【leetcode】学了栈和队列却觉得无用武之地?试试这几道题目吧!
96 0
|
算法
我明白了,leetcode91题
91题**解码方法**的难度属于中等,但其涉及到的知识并不少呢,斐波那契、备忘录剪枝、动态规划等等,除了题解之外,我也会深入浅出的讲解这些知识点,文章末尾我还会使用 正则 + 斐波那契的写法来解题,我们一起来看看。
156 0
我明白了,leetcode91题