有序的数组中找到某一目标值首次出现的下标
来源:互联网 发布:淘宝农村服务站加盟 编辑:程序博客网 时间:2024/05/16 23:51
给定一个升序的数组,这个数组中可能含有相同的元素,并且给定一个目标值。要求找出目标值在数组中首次出现的下标。
思想:题目给出有序数组,应该想到利用二分查找来做。找到左邻居,使其值加一。利用二分查找,算法复杂度为O(logn)
#include<iostream>using namespace std;int findsearch(int *p, int length, int target){ int left = 0; int right = length-1 ; if (p[right - 1] < target&&length<0&&p==NULL) return - 1; while (left < right) { int mid = (left + right) / 2; if (p[mid] < target) left = mid + 1; else right = mid; } if (p[left] == target) return left; else return -1;}int main(){ int p[] = { 4,6,6,6,6 }; int length = 5; int target =6; int index = findsearch(p, length, target); cout << index << endl;}
类似题目:
找到有序数组中某一目标值在数组中的开始下标以及终止下标以及目标值出现的次数。也可以用下面的方法:
#include <iostream>using namespace std;//查找指定数字在有序数组中出现的次数,isLeft标记最左和最右int FindCntofNum(int a[], int len, int num, bool isLeft){ int left = 0, right = len - 1; int pos, mid; while (left <= right)//二分查找 { mid = (left + right) / 2; if (a[mid] < num) { left = mid + 1; } else if (a[mid] > num) { right = mid - 1; } else { pos = mid; if (isLeft)//查找最左值 { right = mid - 1; } else//查找最右值 { left = mid + 1; } } } return pos;//返回最终查找到的位置}int main(){ int a[7] = { 1, 2, 3, 4, 4, 5 ,6}; int left, right, dst; left = FindCntofNum(a, 7, 4, true); right = FindCntofNum(a, 7, 4, false); dst = right - left + 1; cout<< dst<<endl; return 0;}
阅读全文
0 0
- 有序的数组中找到某一目标值首次出现的下标
- 查找有序数组中某个数首次出现的位置
- 在有序数组中,统计某一元素出现的次数
- 查找一个有序数组中某一数值出现的次数
- 用折半查找法在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.
- 写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回
- 可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)
- 有序数组找到出现次数最高的元素和次数
- 从一有序数组中,找到一出现次数最多的数
- c语言找到数组中最大的成员和下标
- (核心算法)查找某个数在有序数组中(递增,含重复)第一次出现的下标
- 在有序的数组中获取目标值的地址——二分查询算法(java实现)
- 写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)
- 写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)
- .写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)C语言
- 算法练习1.Two Sum 数组两个和为目标值的下标(map)
- 找到一个乱序数组排序后某一特定数值首次和末次出现的位置
- 给定按升序排序的整数数组,找到给定目标值的开始和结束位置。 如果在数组中找不到目标,则返回[-1,-1]。
- React Native 学习笔记(二)
- Objective-C中的协议(protocol)与委托
- 机器学习基础,入门介绍
- 欢迎使用CSDN-markdown编辑器
- java对象 父对象 的 对应关系
- 有序的数组中找到某一目标值首次出现的下标
- JavaScript Array 对象的方法
- sublime text3格式化插件HTML-CSS-JS Prettify
- 致逝去的青春岁月节选
- 我为什么鼓励工程师写blog/程序员,如何从平庸走向理想?
- 产品经理-竞品分析
- 【模板】二分匹配
- 【Vijos 1034】家族(并查集)
- Servlet的页面跳转