题目描述: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例 1:
输入: [1,3,5,6], 5示例 2:
输出: 2
输入: [1,3,5,6], 2示例 3:
输出: 1
输入: [1,3,5,6], 7示例 4:
输出: 4
输入: [1,3,5,6], 0题目解答: 方法1:二分法 【LeetCode|LeetCode 35. 搜索插入位置 Search Insert Position(C语言)】因为原数组有序,所以可以利用二分法。
输出: 0
运行时间0ms,代码如下。
int searchInsert(int* nums, int numsSize, int target) {
int left = 0, right = numsSize - 1, mid = 0;
while(left <= right) {
mid = (left + right) / 2;
if(nums[mid] == target)
return mid;
else if(nums[mid] > target) {
right = mid - 1;
}
else
left = mid + 1;
}
return left;
}
推荐阅读
- C语言学习|第十一届蓝桥杯省赛 大学B组 C/C++ 第一场
- 【C】题目|【C语言】题集 of ⑥
- 单片机|自学单片机好找工作吗(会单片机能找什么工作?)
- 单片机|keil把源代码生成lib的方法
- c语言|一文搞懂栈(stack)、堆(heap)、单片机裸机内存管理malloc
- c语言|C语言初期学习遇到的特殊点 【三子棋详解】【初学者福音,详细总结,复习能手】
- 笔记|C语言数据结构——二叉树的顺序存储和二叉树的遍历
- 数据结构与算法|【算法】力扣第 266场周赛
- leetcode|今天开始记录自己的力扣之路
- 个人理解|【C语言基础之类型转换】