废话不多说,直接上干货
Leetcode每日一题
2021/10/18开启,有的人夜里去看海,有的人力扣第一题就做不出来
犹记得那次在刘老师强推下开了力扣的刷题之旅,
用打开力扣APP
第一题,选择简单模式,轻车熟路,啧啧啧
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
这不是有手就行吗?
格局打开,直接拿下!
看下题目要求
![](https://img-blog.csdnimg.cn/5555e58bb7634903909d228cb2b535e7.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP57qi5pelc3Jz,size_20,color_FFFFFF,t_70,g_se,x_16)
啊这???等等,What’s up。我手呢??
由于力扣是有些类似于蓝桥杯算法竞赛这样的输入输出纯IO根据案例判断正确与否的
输入的是 nums = [2,7,11,15], target = 9
那么问题就来了
如何去掉英文数组名Nums 和符号 = 【 】 , 将我们所需要的有效的整数提取出来呢?
(因为我第一次刷题是用APP,不知道在pc答题只用写solution这个核心方法)
从八月初开始接触力扣,因为第一题的将输入中的有效数字接受提取搞不出来直接劝退。
时隔两月,感谢那个在10.15日周五夜里手把手教我如何用力扣刷题并且用一个hasNextInt()敦敦教诲的杰哥@沉默着忍受
(先不@好叭,等我博客写的跟我哥一样牛批不丢他人了再@~)
关于hasNextInt()方法的使用,请允许我贴个大佬的帖子,方便我后续复习:
Java中hasNextInt()方法_柠檬鱼的博客-CSDN博客_java中hasnextint()
对了,这是那天夜里老哥传我的书,今天看了个知识点,贴在这里,
对Public static void main(String args[ ] )有了新的理解
![](https://img-blog.csdnimg.cn/b443623bbf0b4b8d8f6c8cf91fe5c3d1.jpg?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP57qi5pelc3Jz,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/121a2eb730a94966a6527c1345e4a71d.jpg?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP57qi5pelc3Jz,size_20,color_FFFFFF,t_70,g_se,x_16)
再回头逐行解读力扣的第一道题吧
下面用到第0个知识点!
方法头里 返回值类型是 整形数组
public int[] twoSum(int[] nums, int target)
那么我们的返回值就要注意,也是return 数组名;
数组名即可!
两层for循环嵌套,如果找到合适的index下标i,j能凑出来
nums[i]+nums[j]==target;
那么直接返回
return new int[ ]{I,j};
对于数组的声明不熟悉的可以看一下这位大佬的帖子,非常详尽!
java数组完全解析(干货满满)_swordsmanye的博客-CSDN博客_java数组
此处注意,编译器会自动判断你在for循环里满足判断条件,会按照上述语句返回。
那么如果不满足呢?出了for循环外,
这就要求我们在跳出for循环后直接加上
注意这句话一定要加在跳出循环后保底有返回值哦
return new int[0];
接下来就是solution方法的核心语句了
由于题目给出的输入样例都是正整数,
所以我自作聪明搞了个如下的代码
class Solution
{
public int[] twoSum(int[] nums, int target)
{
for(int i=0;i<nums.length;i++)
{
if (target<nums[i])
continue;
if(target>=nums[i])
{
for(int j=i+1;j<nums.length;j++)
{
if(nums[i]+nums[j]==target){return new int[] {i,j};}
}
}
}
return new int[0] ;
}
}
当数组中都是正整数进行凑数时,因为目标值target是两数相加的和,如果target已大于其中一个正整数,那么显然没必要再继续看下去,直接抬走下一位
结果没想到,终究是你旭格局小了
Leetcode输入样例的数组中有负数!!!
![](https://img-blog.csdnimg.cn/7f5c4a79e11f411fb4d5deee6ec08f16.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP57qi5pelc3Jz,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/ac5dfe885478453ba5c1774d0efb55a5.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP57qi5pelc3Jz,size_17,color_FFFFFF,t_70,g_se,x_16)
终究是官方技高一筹啊!
所以读者大大们刷题一定要看清要求呀!
这只是第一题,万事开头难,不要还没开始就结束了哇
最后附上小菜鸡的力扣第一题源码:
![](https://img-blog.csdnimg.cn/566ac743f1a0413aaec29168c73a86a1.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP57qi5pelc3Jz,size_20,color_FFFFFF,t_70,g_se,x_16)
class Solution
{
public int[] twoSum(int[] nums, int target)
{
int l=nums.length;
for(int i =0;i<l;i++)
{
for(int j=i+1;j<l;j++)
{
if(target==nums[i]+nums[j])
{
return new int[]{i,j};
}
}
}
return new int[0];
}
}