引言
今天看题的时候,发现一道题看着挺简单,写了一下,输出正确。感觉解的挺好的,下面记录一下。
题目
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
解题方法
class Solution {
public:int searchInsert(vector<int>& nums, int target) {int i = 0;vector<int>::iterator it;for (it = nums.begin(); it != nums.end();++i) {if (*it == target) {return i;}else{if (target > (*it)) {++it;}else {//插入nums.insert(it,target);output(nums);return i;}}} return 0;}//输出元素void output(vector<int>& nums) {vector<int>::iterator it = nums.begin();while (it != nums.end()) {std::cout<<*it<<" ";}std::cout<<endl;}};
思路
此题实际上是将一个数与给定的有序数组中的元素进行比较,若是在数组中找到该数据,就直接返回被找到的元素的下标,若是在数组中找不到该数据,就将数据插入到数组中合适的位置。以上是对于题目的解读,下面说说思路:为了提高效率,我采用的是先将被查找的数据与数组中的元素比较是否相等,相等直接返回数组中元素的下标,不相等就比较被查找的数据与数组中元素的大小关系,若是被查找的数据小于数组中该元素,就直接插入到该元素之前,若是被查找的数据大于数组中该元素,就比较数组中下一个元素。
注意:
这里涉及到迭代器和数组中下标,次外还有在特定位置上的插入操作insert函数。