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

LeetCode 斐波那契搜索题解

LeetCode 斐波那契搜索题解题目描述实现斐波那契搜索算法在一个有序整数数组中查找目标值。示例输入[11, 12, 22, 25, 34, 64, 90]目标值22输出2目标值在数组中的索引解题思路方法斐波那契搜索思路斐波那契搜索的核心思想是利用斐波那契数列来确定搜索位置从而减少比较次数。具体步骤找到一个大于数组长度的斐波那契数 F(k)。将数组长度扩展到 F(k)不足部分用数组最后一个元素填充。使用斐波那契数列来确定搜索位置pos min(i F(k-2) - 1, n - 1)其中 i 是当前搜索区间的起始位置。比较搜索位置的元素与目标值如果搜索位置的元素等于目标值返回搜索位置的索引。如果搜索位置的元素大于目标值调整搜索区间为左半部分。如果搜索位置的元素小于目标值调整搜索区间为右半部分。重复步骤 3-4直到找到目标值或搜索区间为空。复杂度分析时间复杂度O(log n)其中 n 是数组的长度。斐波那契搜索的时间复杂度与二分搜索相同。空间复杂度O(1)只需要常数级的额外空间。代码实现方法斐波那契搜索# 斐波那契搜索 def fibonacci_search(arr, target): n len(arr) if n 0: return -1 # 初始化斐波那契数列 fib_k_minus_2 0 # F(k-2) fib_k_minus_1 1 # F(k-1) fib_k fib_k_minus_1 fib_k_minus_2 # F(k) # 找到一个大于数组长度的斐波那契数 while fib_k n: fib_k_minus_2 fib_k_minus_1 fib_k_minus_1 fib_k fib_k fib_k_minus_1 fib_k_minus_2 # 初始化为 -1表示尚未使用过的位置 offset -1 # 使用斐波那契数列来确定搜索位置 while fib_k 1: # 计算搜索位置 i min(offset fib_k_minus_2, n - 1) if arr[i] target: # 目标值在右半部分 fib_k fib_k_minus_1 fib_k_minus_1 fib_k_minus_2 fib_k_minus_2 fib_k - fib_k_minus_1 offset i elif arr[i] target: # 目标值在左半部分 fib_k fib_k_minus_2 fib_k_minus_1 fib_k_minus_1 - fib_k_minus_2 fib_k_minus_2 fib_k - fib_k_minus_1 else: # 找到目标值 return i # 检查最后一个元素 if fib_k_minus_1 and arr[offset 1] target: return offset 1 return -1 # 测试 def test_fibonacci_search(): arr [11, 12, 22, 25, 34, 64, 90] print(fibonacci_search(arr, 22)) # 输出2 print(fibonacci_search(arr, 100)) # 输出-1 print(fibonacci_search(arr, 11)) # 输出0 if __name__ __main__: test_fibonacci_search()测试用例测试用例 1基本情况输入[11, 12, 22, 25, 34, 64, 90]目标值22输出2测试用例 2目标值不存在输入[11, 12, 22, 25, 34, 64, 90]目标值100输出-1测试用例 3目标值在第一个位置输入[11, 12, 22, 25, 34, 64, 90]目标值11输出0总结斐波那契搜索是一种高效的搜索算法它利用斐波那契数列来确定搜索位置从而减少比较次数。斐波那契搜索适用于有序数组其时间复杂度为 O(log n)与二分搜索相同。斐波那契搜索的核心思想是利用斐波那契数列来确定搜索位置从而减少比较次数。掌握斐波那契搜索的原理和实现对于理解搜索算法的基本思想非常重要。

相关文章:

LeetCode 斐波那契搜索题解

LeetCode 斐波那契搜索题解 题目描述 实现斐波那契搜索算法,在一个有序整数数组中查找目标值。 示例: 输入:[11, 12, 22, 25, 34, 64, 90],目标值:22输出:2(目标值在数组中的索引) 解…...

如何快速解密QQ音乐加密文件:qmcdump完整使用指南

如何快速解密QQ音乐加密文件:qmcdump完整使用指南 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 你是否曾经…...

别再让 Agent 盲目“猜”了!揭秘 CareerPilot 如何用 PaddleOCR 打造职业规划的“第一道防线”

大家在聊起 AI Agent(智能体) 时,脑海中浮现的第一个画面是什么? 是一个无所不知的聊天窗口?还是一个能自动写代码的机器人? 在很多人的认知里,Agent 的核心似乎就是“对话”。但在职业规划这…...

200+小说网站一键下载:novel-downloader终极离线阅读解决方案

200小说网站一键下载:novel-downloader终极离线阅读解决方案 【免费下载链接】novel-downloader 一个可扩展的通用型小说下载器。 项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader 在数字阅读时代,你是否曾担心心爱的小说突然消失…...

VRCT:打破VRChat语言壁垒的3大核心功能

VRCT:打破VRChat语言壁垒的3大核心功能 【免费下载链接】VRCT VRCT(VRChat Chatbox Translator & Transcription) 项目地址: https://gitcode.com/gh_mirrors/vr/VRCT 你是否曾在VRChat的国际房间中,因为语言不通而错失结识全球朋友的机会&am…...

终极窗口大小调整神器:WindowResizer让你完全掌控桌面布局

终极窗口大小调整神器:WindowResizer让你完全掌控桌面布局 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 还在为那些固执的应用程序窗口而烦恼吗?有些软件…...

如何快速掌握JetBrains IDE试用期重置工具:面向开发者的完整指南

如何快速掌握JetBrains IDE试用期重置工具:面向开发者的完整指南 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 你是否曾经因为JetBrains IDE试用期到期而被迫中断开发工作?精心配置的开发…...

如何快速配置BaiduPCS-Web:三步实现百度网盘极速下载的完整指南

如何快速配置BaiduPCS-Web:三步实现百度网盘极速下载的完整指南 【免费下载链接】baidupcs-web 项目地址: https://gitcode.com/gh_mirrors/ba/baidupcs-web 还在为百度网盘令人崩溃的下载速度而烦恼吗?你是否经历过下载一个大文件需要数小时甚至…...

7大核心能力深度解析:foo_openlyrics打造foobar2000终极歌词体验的完整指南

7大核心能力深度解析:foo_openlyrics打造foobar2000终极歌词体验的完整指南 【免费下载链接】foo_openlyrics An open-source lyric display panel for foobar2000 项目地址: https://gitcode.com/gh_mirrors/fo/foo_openlyrics 在音乐播放器生态中&#xff…...

2026年项目管理工具推荐!这6款主流软件值得试试​

2026 年,企业数字化协作全面普及,远程办公、跨部门联动、多项目并行已成为团队工作常态。但多数企业仍深陷项目管理困境:任务分工模糊导致相互推诿、进度全靠口头同步频繁遗漏、风险爆发后才被动补救、文档散落在聊天记录与网盘中难以追溯………...

Firefox Reality:如何在VR/AR头显中重新定义你的网页浏览体验?

Firefox Reality:如何在VR/AR头显中重新定义你的网页浏览体验? 【免费下载链接】FirefoxReality A fast and secure browser for standalone virtual-reality and augmented-reality headsets. 项目地址: https://gitcode.com/gh_mirrors/fi/FirefoxRe…...

MIKE IO完全指南:5分钟掌握Python水文数据处理核心技能

MIKE IO完全指南:5分钟掌握Python水文数据处理核心技能 【免费下载链接】mikeio Read, write and manipulate dfs0, dfs1, dfs2, dfs3, dfsu and mesh files. 项目地址: https://gitcode.com/gh_mirrors/mi/mikeio MIKE IO是DHI集团开发的Python开源库&#…...

手把手教你,如何一句话建立嵌入式闭环开发agent的工作流

上一篇介绍完10分钟安装好OpenCode,有的小伙伴下载不到安装的EXE,我已经上传我的资源了,大家可以直接下载 安装好opencode和Python后 1 在自己的电脑下建一个文件夹,名字随意 2 打开opencode添加文件夹作为工程的路径 3 输入提示词&#x…...

微信视频号评论采集:技术原理、逆向分析与工程挑战

文章目录前言1. 通信架构:不只是 HTTP 那么简单1.1 核心链路拆解2. 逆向攻坚:如何搞定 Sign 签名?2.1 常见的逆向手段2.2 采集流程示意3. 工程化落地:稳才是硬道理3.1 别被风控盯上3.2 工程化提效:从自建到平台化4. 红…...

工行科技岗面试官亲述:我们如何在2对1面试中考察应届生的真实能力?

工行科技岗面试官亲述:我们如何在2对1面试中考察应届生的真实能力? 在金融科技快速发展的今天,银行科技岗位的竞争愈发激烈。作为工商银行科技部门的面试官,我每年都要面对数百份应届生简历,如何在短短30分钟的2对1面试…...

批发零售业缺客源?AI 精准对接上下游,获取批量采购询盘

行业痛点分析在当前的批发零售行业中,企业面临着严峻的获客挑战。根据市场调研数据显示,超过60%的批发零售企业在过去一年中经历了客户流失率上升的问题,而其中40%的企业表示新客户的获取成本显著增加。这一现象不仅影响了企业的短期盈利能力…...

如何彻底掌控你的数字记忆:WeChatMsg三步骤实现聊天记录永久保存与智能分析

如何彻底掌控你的数字记忆:WeChatMsg三步骤实现聊天记录永久保存与智能分析 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitH…...

ROS导航避坑指南:手把手教你正确发布和使用Odometry消息(附Python/C++代码)

ROS导航避坑指南:手把手教你正确发布和使用Odometry消息 在机器人导航开发中,里程计(Odometry)消息的正确处理往往是决定定位精度的关键因素。许多开发者在TurtleBot3、Husky等平台上进行自主导航开发时,都会遇到定位漂移、坐标系混乱等问题&…...

如何在Windows上直接安装APK文件:告别模拟器的终极轻量级解决方案

如何在Windows上直接安装APK文件:告别模拟器的终极轻量级解决方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想在Windows电脑上运行安卓应用&#xff…...

2026届毕业生推荐的五大降重复率神器横评

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 将AI指令予以降低的关键点在于对生成参数与指令结构作出调整,首先,把…...

MATLAB新手也能搞定:用代码画多模光纤里的‘光斑’(附完整源码)

MATLAB实战:从零绘制多模光纤中的光斑图景 当你第一次在显微镜下观察多模光纤输出的光斑时,那些复杂而美丽的图案是否让你好奇它们是如何形成的?作为光学或通信领域的学习者,掌握用代码再现这些物理现象的能力,就像获…...

【紧急更新】R 4.3.3+LLM Bias Toolkit兼容性漏洞已修复!立即下载patched版本避免训练数据偏见误判

更多请点击: https://intelliparadigm.com 第一章:R 语言在大语言模型偏见检测中的统计方法 R 语言凭借其强大的统计建模能力与丰富的文本分析生态(如 tidytext、quanteda、textdata),已成为评估大语言模型&#xff0…...

从人工标注到自动生成:深入拆解Auto-CoT,如何让大模型自己给自己写‘参考答案’

从人工标注到自动生成:深入拆解Auto-CoT,如何让大模型自己给自己写‘参考答案’ 想象一下,你正在训练一位新入职的算法工程师解决数学应用题。传统方法需要你亲自演示每道题的解题步骤——这就像Few-shot CoT中的人工标注过程,耗时…...

Wand-Enhancer 终极指南:三步免费解锁 WeMod 专业版功能

Wand-Enhancer 终极指南:三步免费解锁 WeMod 专业版功能 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 还在为 WeMod 专业版的高昂订阅费用…...

从DFMEA到软件设计:如何像造汽车一样‘预防性’设计你的代码?

从DFMEA到软件设计:如何像造汽车一样‘预防性’设计你的代码? 在汽车制造业中,一个螺栓的失效可能导致整车的召回;而在软件系统中,一行代码的漏洞同样可能引发线上事故。传统软件开发往往陷入"编码-测试-修复&qu…...

【全】Obsidian + GitHub + Quartz 个人博客 简单 搭建教程

Obsidian GitHub Quartz 个人博客搭建教程:完整详细版 这篇文章会一步一步教你搭建一个免费的个人笔记博客。 最终使用的方案是: Obsidian GitHub Quartz GitHub Pages最终效果是: 你在 Obsidian 写笔记 ↓ Obsidian Git 插件自动上…...

还在写SQL?未来数据库已经开始“听人话”

还在写SQL?未来数据库已经开始“听人话”了 你有没有过这种瞬间: 一个简单查询,写了20分钟SQL,还报错。 隔壁产品经理一句“帮我看下这个月转化率”,你却在拼JOIN。 更扎心的是——你写的SQL,三个月后连自己都看不懂。 说句大实话: 👉 问题不在SQL难,而在“人要适配…...

2026年腾讯云Hermes Agent/OpenClaw集成步骤+百炼token Plan配置教程攻略

2026年腾讯云Hermes Agent/OpenClaw集成步骤百炼token Plan配置教程攻略。OpenClaw和Hermes Agent是什么?OpenClaw和Hermes Agent怎么部署?如何部署OpenClaw/Hermes Agent?2026年还在为部署OpenClaw和Hermes Agent到处找教程踩坑吗&#xff1…...

5分钟终极指南:Locale Emulator从安装到使用的完整解决方案

5分钟终极指南:Locale Emulator从安装到使用的完整解决方案 【免费下载链接】Locale-Emulator Yet Another System Region and Language Simulator 项目地址: https://gitcode.com/gh_mirrors/lo/Locale-Emulator 你是否曾经因为日文游戏乱码而烦恼&#xff…...

CSS如何实现深色模式自动适配_利用prefers-color-scheme与变量定义

最稳妥写法是同时声明 light 和 dark 媒体查询,避免嵌套复合条件;CSS 变量应分层定义,主题色在 :root 中用媒体查询覆盖;JS 切换主题需同步更新变量与 class 并以 localStorage 为准。prefers-color-scheme 媒体查询怎么写才可靠直…...