【优选算法题练习】day7

这篇具有很好参考价值的文章主要介绍了【优选算法题练习】day7。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、35. 搜索插入位置

1.题目简介

35. 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(log n) 的算法。
【优选算法题练习】day7,优选算法题练习,算法,leetcode

2.解题思路

3.代码

class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {
        int left = 0, right = nums.size() - 1;
        while(left <= right)
        {
            int mid = left + (right - left) / 2;
            if(nums[mid] < target)
            {
                left = mid + 1;
            }
            else if(nums[mid] > target)
            {
                right = mid - 1;
            }
            else
            {
                return mid;
            }
        }
        return left;
    }
};

4.运行结果

【优选算法题练习】day7,优选算法题练习,算法,leetcode

二、69. x 的平方根

1.题目简介

69. x 的平方根
给你一个非负整数 x ,计算并返回 x 的 算术平方根 。
由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。
注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。
【优选算法题练习】day7,优选算法题练习,算法,leetcode

2.解题思路

3.代码

class Solution {
public:
    int mySqrt(int x) {
        if(x < 1) return 0;
        int left = 1, right = x;
        while(left < right)
        {
            long long mid = left + (right - left + 1) / 2;
            if(mid * mid <= x)
            {
                left = mid;
            }
            else
            {
                right = mid - 1;
            }
        }
        return left;
    }
};

4.运行结果

【优选算法题练习】day7,优选算法题练习,算法,leetcode

三、852. 山脉数组的峰顶索引

1.题目简介

852. 山脉数组的峰顶索引
符合下列属性的数组 arr 称为 山脉数组 :
arr.length >= 3
存在 i(0 < i < arr.length - 1)使得:
arr[0] < arr[1] < … arr[i-1] < arr[i]
arr[i] > arr[i+1] > … > arr[arr.length - 1]
给你由整数组成的山脉数组 arr ,返回满足 arr[0] < arr[1] < … arr[i - 1] < arr[i] > arr[i + 1] > … > arr[arr.length - 1] 的下标 i 。
你必须设计并实现时间复杂度为 O(log(n)) 的解决方案。
【优选算法题练习】day7,优选算法题练习,算法,leetcode

2.解题思路

3.代码

class Solution {
public:
    int peakIndexInMountainArray(vector<int>& arr) {
        int left = 1, right = arr.size() - 2;
        while(left < right)
        {
            int mid = left + (right - left + 1) / 2;
            if(arr[mid] > arr[mid - 1])//如果mid所处位置是上升的,则我们要在mid + 1~right区间寻找
            {
                left = mid;
            }
            else//如果mid所处位置是下降的,则我们要在left~mid-1区间寻找
            {
                right = mid - 1;
            }
        }
        return left;
    }
};

4.运行结果

【优选算法题练习】day7,优选算法题练习,算法,leetcode


总结

今天是算法练习的第7天。
只要功夫深,铁杵磨成针,继续加油!
题目来源:力扣(LeetCode),著作权归领扣网络所有。
如果本篇文章对你有所启发的话,希望可以多多支持作者,谢谢大家!文章来源地址https://www.toymoban.com/news/detail-577324.html

到了这里,关于【优选算法题练习】day7的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 算法练习Day30 (Leetcode/Python-动态规划)

    62. Unique Paths There is a robot on an  m x n  grid. The robot is initially located at the  top-left corner  (i.e.,  grid[0][0] ). The robot tries to move to the  bottom-right corner  (i.e.,  grid[m - 1][n - 1] ). The robot can only move either down or right at any point in time. Given the two integers  m  and  n , return  the number of possible

    2024年01月20日
    浏览(41)
  • leetcode(矩阵)74. 搜索二维矩阵(C++详细解释)DAY7

    给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。 m == matrix.length n == matrix[i].length 1 = m, n = 100 -10^ 4 = matrix

    2024年02月19日
    浏览(35)
  • dp算法篇Day7

     \\\"抱紧你的我,比国王富有~\\\"          从题目来看还是很容易理解的,就是找寻数组中构成差值相等的子序列。                        等差数列?这似乎和我们之前做的一个题类似。但是,那个题是给出了差值,但是这道题却没有。因此,这两道题的解法就很不一样

    2024年02月16日
    浏览(33)
  • Day.1 LeetCode刷题练习(最长公共前缀 C/C++两种解法)

    题目: 例子: 分析题目: 主要目的:求出各个字符串的公共前缀 思路(本人解法): 用所给实例来看,不难看出我们可以直接以竖着对应来查看是否是公共前缀 ,  这样就有了一定的思路 , 然后接着想如何让他找到最长的公共前缀后就 停止下来呢  这样就能想到,从最

    2024年02月11日
    浏览(38)
  • 贪心算法练习day.1

    贪心算法是一种常见的解决优化问题的方法,其基本思想就是在问题的每个决策阶段,都选择当前看起来最优的选择,即 贪心地做出局部的最优决策,以此得到全局的最优解, 例如在十张面额不同的钞票,让我们去取5张,那如何拿到最多的钱呢?那我们每次取钞票时只需要

    2024年04月27日
    浏览(33)
  • 贪心算法练习day2

    1)初始化最小字母为‘Z’,确保任何字母都能与之比较 2)遍历单词,找到当前未删除字母中的最小字母 3)获取当前位置的字母  current = word.charAt(i); 4)删除最小字母之前的所有字母  word=word.substring(index+1); 5)  将最小字母添加到结果字符,更新剩余可删除字母数量 t -=

    2024年02月20日
    浏览(38)
  • arm:day7

    1.软中断处理    

    2024年02月12日
    浏览(39)
  • 自学day7 数组

    对象中可以通过键值对存储多个数据,且数据的类型是没有限制的,所以通常会存储一个商品的信息或一个人的信息: 但对象在存储同类型数据的时候比较困难,例如,存储一个班级所以人的姓名: 这种存储方式我们没有办法通过一个人的姓名获取到这个人的编号,也没有

    2024年02月05日
    浏览(37)
  • C++ Day7

    C++11中引出了变量的类型自动推导,它和Python 不一样,C++需要用auto来引导 auto修饰变量,可以自动推导出变量的数据类型 1 使用auto修饰变量时,必须初始化 2 auto的右值,可以是右值,也可以是表达式,还可以是函数的返回值 3 auto不能直接声明数组 4 auto不能作为函数的

    2024年02月10日
    浏览(38)
  • c++day7

     仿照vector手动实现自己的myVector,最主要实现二倍扩容功能 思维导图

    2024年02月08日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包