当前位置: 首页 > news >正文

自己的服务器如何做网站大朗做网站的

自己的服务器如何做网站,大朗做网站的,wordpress 维护模式,深圳工程招标信息网🌟快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 🌟 别再犹豫了!快来订阅我们的算法每日双题精讲专栏,一起踏上算法学习的精彩之旅吧💪 在算法的…

 🌟快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 🌟 

别再犹豫了!快来订阅我们的算法每日双题精讲专栏,一起踏上算法学习的精彩之旅吧💪   


         在算法的学习之旅中,二分查找是一种高效且经典的算法,其应用场景广泛。今天我们将深入探讨如何运用二分查找来解决 “寻找旋转排序数组中的最小值” 以及趣味十足的 “点名” 问题。这两道题不仅能加深我们对二分查找的理解,还能锻炼我们在不同场景下灵活运用算法的能力。 


 目录

一、寻找旋转排序数组中的最小值

📖题目描述

🧠讲解算法原理

💻代码实现(以 C++ 为例)

复杂度分析

二、点名

📖题目描述

🧠讲解算法原理

💻代码实现(以 C++ 为例)

复杂度分析


一、寻找旋转排序数组中的最小值

题目链接👉【力扣】

📖题目描述

 

 

 

🧠讲解算法原理

对于这道题,我们可以利用二分查找来优化时间复杂度。

        初始化左指针 left 为 0,右指针 right 为数组长度减 1。在循环过程中,计算中间索引 mid = left + (right - left) / 2 。

比较 nums[mid] 与 nums[right] 的大小:

  • 如果 nums[mid] < nums[right] ,说明最小值在 mid 及其左边,因为 mid 到 right 这一段是有序的,最小值肯定不在这一段,所以将 right 更新为 mid 。
  • 如果 nums[mid] > nums[right] ,说明最小值在 mid 的右边,因为 mid 及其左边这一段是有序的,最小值不在这一段,所以将 left 更新为 mid + 1 。

当 left 等于 right 时,循环结束,此时 nums[left] 就是数组中的最小值。

 

💻代码实现(以 C++ 为例)

#include <iostream>
#include <vector>using namespace std;int findMin(vector<int>& nums) {int left = 0, right = nums.size() - 1;while (left < right) {int mid = left + (right - left) / 2;if (nums[mid] < nums[right]) {right = mid;}else {left = mid + 1;}}return nums[left];
}

复杂度分析

 

  • 时间复杂度:每次循环都将搜索区间缩小一半,所以时间复杂度为 O(log n),其中 n 是数组的长度。相比遍历整个数组查找最小值的暴力解法(时间复杂度为 O(n)),效率大大提高。
  • 空间复杂度:只使用了常数级别的额外空间,即几个指针变量,所以空间复杂度为 O(1)

二、点名

 题目链接👉【力扣】

📖题目描述

 

 

 

🧠讲解算法原理

这道题同样可以借助二分查找来高效解决。

        初始化左指针 left 为 0,右指针 right 为名单长度减 1。

        在循环中,计算中间索引 mid = left + (right - left) / 2 。

比较中间位置的学生名字与老师点的名字:

  • 如果相同,直接返回 mid 。
  • 如果中间位置的名字小于老师点的名字,说明要找的名字在 mid 的右边,将 left 更新为 mid + 1 。
  • 如果中间位置的名字大于老师点的名字,说明要找的名字在 mid 的左边,将 right 更新为 mid - 1 。

当 left 大于 right 时,循环结束,说明名单中没有该学生,返回 -1 。

💻代码实现(以 C++ 为例)

#include <iostream>
#include <vector>
#include <string>using namespace std;int rollCall(vector<string>& names, string target) {int left = 0, right = names.size() - 1;while (left <= right) {int mid = left + (right - left) / 2;if (names[mid] == target) {return mid;}else if (names[mid] < target) {left = mid + 1;}else {right = mid - 1;}}return -1;
}

复杂度分析

  • 时间复杂度:每次迭代都能将搜索区间缩小一半,时间复杂度为O(log n) ,其中 n是名单中学生的数量。相比逐个遍历名单查找学生的暴力解法(时间复杂度为 O(n)),效率大幅提升。
  • 空间复杂度:只使用了常数级别的额外空间,如几个指针变量,所以空间复杂度为 O(1)

        通过对这两道题目的学习,我们对二分查找算法的理解和应用能力又上了一个新台阶。在今后遇到类似问题时,要学会灵活运用二分查找来优化代码的时间复杂度。

如果大家在学习过程中有任何疑问或者想法,欢迎在评论区交流分享。后续我还会带来更多精彩的算法内容,记得关注哦!

 

http://www.yayakq.cn/news/672480/

相关文章:

  • 网站做产品的审核工作怎么样wordpress 点击加微信
  • 网站采集功能做标志的网站
  • 中国设计最好的网站php做公司网站
  • 个人如何建立公司网站江苏建设厅施工员证报名网站
  • 网站效果图制作wordpress vue主题
  • 平面设计素材网站排行榜前十名邳州城乡建设局网站
  • 网站开发素材包简单大气网站源码
  • 农业网站建设方案无锡网站建设君通科技公司
  • 大学网站建设专业龙岗注册公司
  • 工程建设业主官方网站十大免费推广平台
  • 做网页兼职网站国外购买域名网站
  • 石家庄营销型网站建设公司红色培训网站源码
  • 遵义县住房和城乡建设局网站竞价推广怎样管理
  • 苏州建网站的公司平台收费标准网站建设 服务质量保证
  • 安徽网站建设首选-晨飞网络中国做网站的公司有哪些
  • 网站版面设计wordpress首页怎么加内容
  • 镇江海绵城市建设官方网站wordpress 文章 代码
  • 大良营销网站建设教程用什么软件做楼盘微网站
  • 网站长期外包东莞学校网站建设
  • 中山专业做网站的公司wordpress如何设置注册用户名大于4个字符
  • 什么是网站流量优化中企动力是干什么的
  • 为什么局域网做网站wordpress 无法登录
  • 金融网站建设公司沈阳网站开发招聘
  • 长沙服务好的网络营销郑州快速排名优化网站
  • 音乐网站建设策划书it外包公司怎么找
  • 关于企业网站建设的请示简述网站推广的方式
  • 中国轻工建设公司网站网络公司开发软件
  • 大连网站建设方案维护wap网站域名申请
  • 免费个人网站建站申请电脑优化工具
  • 大气简约企业网站模板免费下载企业官网建设费用