C++试题
引言
今天看題的時候,發現一道題看著挺簡單,寫了一下,輸出正確。感覺解的挺好的,下面記錄一下。
題目
給定一個排序數組和一個目標值,在數組中找到目標值,并返回其索引。如果目標值不存在于數組中,返回它將會被按順序插入的位置。
解題方法
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函數。
總結
- 上一篇: python中的tkinter_基于py
- 下一篇: Qt中QMap删除元素的简单使用