[解题报告]【第30题】给定 n 个元素的升序整型数组,再给出一个值 target,求实现一个函数查找 nums 中 target 的下标

简介: [解题报告]【第30题】给定 n 个元素的升序整型数组,再给出一个值 target,求实现一个函数查找 nums 中 target 的下标

全文目录

 ☘前言☘

 🎁主要知识点

            二分查找

 📓课后习题

            704. 二分查找

 📑写在最后

☘前言☘

今天是c语言基础打卡的第30天,今天这些题还是有点意思的。

相关链接:

【第30题】给定 n 个元素的升序整型数组,再给出一个值 target,求实现一个函数查找 nums 中 target 的下标


全文大约阅读时间: 10min


🧑🏻作者简介:一个从工业设计改行学嵌入式的年轻人

✨联系方式:2201891280(QQ)


🎁主要知识点

二分查找

在有序数组查找元素的时候,可以每次查看中间的元素值,根据中间元素的值缩小查找范围,是为二分。


int search(int n, int *nums, int target) {
    int l = 0, r = n - 1;                // 初始值
    while(l <= r) {                      // 查找跳出条件
        int mid = (l + r) >> 1;          // 其实就是中间位置
        if(nums[mid] == target) {   
            return mid;                  // 找到元素
        }else if(target > nums[mid]) {
            l = mid + 1;                 // 缩小范围
        }else if(target < nums[mid]) {
            r = mid - 1;                 // 缩小范围
        }
    }
    return -1;                           // 没找到
}


📓课后习题

704. 二分查找

704. 二分查找


给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。


解题思路


按照二分思想写就完事了,完全一样


int search(int* nums, int numsSize, int target){
    int low = 0,high = numsSize - 1;
    while(low <= high){
        int mid = (low + high)/2;
        if(nums[mid] == target)   return mid;
        else if(nums[mid] > target) high = mid-1;
        else                        low = mid + 1;
    }
    return -1;
}


相关文章
|
11月前
|
算法
【LeetCode】每日一题&&两数之和&&寻找正序数组的中位数&&找出字符串中第一个匹配项的下标&&在排序数组中查找元素的第一个和最后一个位置
【LeetCode】每日一题&&两数之和&&寻找正序数组的中位数&&找出字符串中第一个匹配项的下标&&在排序数组中查找元素的第一个和最后一个位置
|
6月前
【Leetcode】两数之和,给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
【Leetcode】两数之和,给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
|
3月前
|
算法 索引
LeetCode第34题在排序数组中查找元素的第一个和最后一个位置
这篇文章介绍了LeetCode第34题"在排序数组中查找元素的第一个和最后一个位置"的解题方法,通过使用双指针法从数组两端向中间同时查找目标值,有效地找到了目标值的首次和最后一次出现的索引位置。
LeetCode第34题在排序数组中查找元素的第一个和最后一个位置
数组求最大值和最小值的方法,数组写最大值和最小值的三元写法,数组取最小值,如何在数组中添加最后一个值,arr.push()添加数组放到后面,arr.unshift(‘red‘)添加的放到前面
数组求最大值和最小值的方法,数组写最大值和最小值的三元写法,数组取最小值,如何在数组中添加最后一个值,arr.push()添加数组放到后面,arr.unshift(‘red‘)添加的放到前面
|
5月前
|
C++
C++数组(定义、遍历、长度、地址、最大值、逆置、冒泡排序)
C++数组(定义、遍历、长度、地址、最大值、逆置、冒泡排序)
|
6月前
|
存储 算法 Java
数据结构和算法面试题:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
数据结构和算法面试题:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
88 0
|
6月前
|
算法
leetcode-34:在排序数组中查找元素的第一个和最后一个位置
leetcode-34:在排序数组中查找元素的第一个和最后一个位置
34 0
LeetCode-34 在排序数组中查找元素的第一个和最后一个位置
LeetCode-34 在排序数组中查找元素的第一个和最后一个位置
定义一个包含10个整数元素的数组,初始值由用户给定。找出数组中的最大数并连同下标一起输出。
定义一个包含10个整数元素的数组,初始值由用户给定。找出数组中的最大数并连同下标一起输出。
231 0
【LeetCode】错误的集合&&在排序数组中查找元素的第一个和最后一个位置&&杨氏矩阵&&寻找数组的中心下标&&两个数组的交集
【LeetCode】错误的集合&&在排序数组中查找元素的第一个和最后一个位置&&杨氏矩阵&&寻找数组的中心下标&&两个数组的交集
【LeetCode】错误的集合&&在排序数组中查找元素的第一个和最后一个位置&&杨氏矩阵&&寻找数组的中心下标&&两个数组的交集