一、我对算法分析与设计这门课的一点想法我个人认为我们学习算法的目的是为了解决问题,那我们分析算法的目的是为了得到跟好的解决办法。
二、题目
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
解析题意:
题目的大概意思就是让你实现一个函数,函数的参数是一个数组和一个指标值target,然后在数组里面任意两个数相加等于target,让你以数组的形式返回这两个数在数组中的索引。
三、解题思路
这道题如果放在程序设计的课堂上那再也不过是一道小儿科的题目了,但是今天不是程序设计,今天是算法分析与设计,虽然第一次作业选的第一道题可能有点简单,但我还是会认真对待。
这道题读完后我脑海里出现的第一个思路就是从数组里面抽一个数字和其他数字进行匹配,看加起来是不是等于target,若是等于那就返回他们的索引值。一个数字匹配完如果没有发现结果,那另一个数字开始匹配。比如第一个数字出来从第二个数字开始往后匹配,没有匹配出来的话,第二个数字出来开始匹配,这时候第二个数字从第三个数字开始匹配,因为第一个数字已经和第二个数字完成了匹配。后面以此类推直到匹配出来为止。
这让我很快联想到冒泡排序,不知道大家有没有觉得这道题可以借鉴冒泡排序那个算法。冒泡排序的思想也就是冒一个泡和其他数字进行大小比较,这道题是抽一个数和其他数字进行相加后和target比较。
四、代码
class Solution {
public int[] twoSum(int[] nums, int target) {
int arry[] = {0, 0};
for(int i = 0; i < nums.length; i++){
for(int j = i + 1; j < nums.length; j++){
if(nums[i] + nums[j] == target){
arry[0] = i;
arry[1] = j;
}
}
}
return arry;
}
}
以上是我今天完成的算法分析与设计的第一道题,也是第一个博客,以后还会有更多