35. 搜索插入位置
程序员文章站
2022-03-07 18:29:31
...
//方法1(二分)
int search(vector<int> arr, int num) {
int l = 0, r = arr.size() - 1;
while (l <= r) {
int mid = l + (r - l) / 2;
if (arr[mid] == num)
return mid;
else if (arr[mid] < num)
l = mid + 1;
else
r = mid - 1;
}
return -1;
}
int searchInsert(vector<int> &nums, int target) {
int arr[nums.size()], index = 0;
copy(nums.begin(), nums.end(), arr);
if (search(nums, target) != -1)
return search(nums, target);
else if (target >= nums[0] || target <= nums[nums.size() - 1])
index = lower_bound(arr, arr + nums.size(), target) - arr;
else if (target > nums[nums.size() - 1])
index = nums.size();
return index;
}
//方法2(二分位运算)
int searchInsert(vector<int> &nums, int target) {
int l = 0, r = nums.size(), mid = l + ((r - l) >> 1);
while (l < r) {
if (nums[mid] < target)
l = mid + 1;
else if (nums[mid] > target)
r = mid;
else
return mid;
mid = l + ((r - l) >> 1);
}
return mid;
}
上一篇: 35. 搜索插入位置
下一篇: ES5之严格模式
推荐阅读
-
php数组函数序列之array_splice() - 在数组任意位置插入元素
-
用PHP查询搜索引擎排名位置的代码
-
PHP实现搜索地理位置及计算两点地理位置间距离的实例
-
C#搜索文字在文件及文件夹中出现位置的方法
-
Java 替换word文档文字并指定位置插入图片
-
全盘搜索指定文件并拷贝到指定位置[自动重命名]的批处理
-
在Word2003文档窗口中定位插入点光标位置
-
【转载】C#中使用Insert方法往ArrayList集合指定索引位置插入新数据
-
【转载】C#通过InsertAt方法在DataTable特定位置插入一条数据
-
Aspose.Words 将word2中的内容插入到word1中的指定位置