leetcode刷题第一天
数组类题目
1两数之和
题目
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
思路
第一种暴力求解
首先对数组元素遍历,第一遍每一次得到一个数,之后进行第二次遍历,将剩下的数字与每一次第一遍的数进行相加,与目标值进行比较,得到即返回数组下标值
可修改处:
1.若每种输入不只会对应一个答案,修改方案如何?
2.把两数之和扩展为n数之和,如何进行优化?
第一种暴力求解代码
C语言版
1 |
第二种先排序再查找
可解决第一个问题,处理多答案的方案
首先复习一下排序的知识
排序算法包括内部排序,外部排序
| 插入 | 交换 | 选择 | 其他 | 外部 |
|---|---|---|---|---|
| 直接插入 | 冒泡 | 简单选择 | 归并 | 多路归并 |
| 折半插入 | 快速 | 堆排序 | 基数 | |
| 希尔 |
之后是查找的知识
1.顺序查找法
2.分块查找发
3.折半查找法
4.树形查找
5.b树
6.哈希表
第三种哈希表
哈希表知识学习