历经3个多月的看完了韩顺平老师的数据结构和算法.个人而言确实学到了很多了,在这里也总结下学习的过程,我们都知道算法的学习是很枯燥而且耗时,在学习的过程中通过做笔记和先理解算法的核心思想在加上代码的编写,让我们有了更深的理解,对于实际问题的解决有很多中算法,每一种都有自己的优点,就比如我们常见的8大算法,每种算法的时间复杂度都是不一样的,关于算法学习的博客编写我会后面抽时间完成,从今天开始,每天坚持刷一道算法题
题目
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
要求:不能重复利用这个数组中同样的元素 ,假设我给的数组元素为 nums = [2, 7, 11, 15], target = 9 ,首先我们来进行简单的思路分析
这道题主要是来求两数之和,不难理解我们是需要从nums数组中取出两个数然后相加和target 进行比较即可,那么我的做法如下:
- 1.第一个for循环我们的nums数组,(i)下标从0开始
- 2.第二个for循环我们的nums数组,下标从i +1开始(其主要的目的是错开一位,避免两次从nums数组中获取的元素是一样的)
- 3.定义一个数组来存储我们的找到元素的下标,同时返回此数组即可
上述就是简单的思路分析,接着我们来看代码实现
代码实现
import java.util.Arrays;
public class day1 {
public static void main(String[] args) {
int[] nums = {2, 7, 11, 15};
int target = 9;
int[] result = twoSum(nums, target);
System.out.println(Arrays.toString(result));
}
public static int[] twoSum(int[] nums, int target) {
int[] arr;
for(int i =0; i < nums.length; i++ ){
for(int j = i +1; j <nums.length; j++){
if(nums[i] +nums[j] == target){
arr = new int[] {i,j};
return arr ;
}
}
}
return null;
}
来看测试结果如下图:
上述就是解题的过程,当然还有的别的思路过程