算法分析与设计——LeetCode刷题之TwoSum(easy)
2017-09-07 00:44
393 查看
一、我对算法分析与设计这门课的一点想法
我个人认为我们学习算法的目的是为了解决问题,那我们分析算法的目的是为了得到跟好的解决办法。
二、题目
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比较。
四、代码
我个人认为我们学习算法的目的是为了解决问题,那我们分析算法的目的是为了得到跟好的解决办法。
二、题目
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; } }以上是我今天完成的算法分析与设计的第一道题,也是第一个博客,以后还会有更多
相关文章推荐
- 算法分析与设计——LeetCode Problem.653 Two Sum IV - Input is a BST
- 算法分析与设计丨第六周丨LeetCode(10)——Best Time to Buy and Sell Stock(Easy)
- 算法分析与设计丨第十八周丨LeetCode(21)——Binary Tree Maximum Path Sum(Hard)
- 算法分析与设计丨第三周丨LeetCode(5)——Median of Two Sorted Arrays(Hard)
- 算法分析与设计课程——LeetCode刷题之3Sum
- 算法分析与设计——LeetCode:4. Median of Two Sorted Arrays
- 算法分析与设计——leetcode刷题之Add Two Numbers(Medium)
- [算法分析与设计] leetcode 每周一题: 494. Target Sum
- 算法分析与设计——LeetCode Problem.617 Merge Two Binary Trees
- 算法分析与设计丨第二周丨LeetCode(4)——Maximum Subarray(Easy)
- 算法分析与设计课程——LeetCode刷题之Merge Two Sorted Lists
- 算法分析与设计——LeetCode Problem.64 Minimum Path Sum
- 算法分析与设计——LeetCode Problem.18 4Sum
- 算法分析与设计——LeetCode:39. Combination Sum
- 算法分析与设计——LeetCode Problem.2 Add Two Numbers
- 算法分析与设计——LeetCode:617. Merge Two Binary Trees
- 算法分析与设计——LeetCode Problem.2 Add Two Numbers
- 算法分析与设计课程(12):【leetcode】 Count Complete Tree Nodes
- 算法分析与设计——LeetCode Problem.63 Unique Paths II
- [算法分析与设计] leetcode 每周一题: Word Ladder