《算法闯关指南:优选算法--前缀和》--27.寻找数组的中心下标,28.除自身以外数组的乘积

《算法闯关指南:优选算法--前缀和》--27.寻找数组的中心下标,28.除自身以外数组的乘积
在这里插入图片描述

🔥草莓熊Lotso:个人主页
❄️个人专栏: 《C++知识分享》《Linux 入门到实践:零基础也能懂》
✨生活是默默的坚持,毅力是永久的享受!


🎬 博主简介:

在这里插入图片描述

文章目录


前言:

聚焦算法题实战,系统讲解三大核心板块:优选算法:剖析动态规划、二分法等高效策略,学会寻找“最优解”。 递归与回溯:掌握问题分解与状态回退,攻克组合、排列等难题。 贪心算法:理解“局部最优”到“全局最优”的思路,解决区间调度等问题 内容以题带点,讲解思路与代码实现,帮助大家快速提升代码能力。

27. 寻找数组的中心下标

题目链接

724. 寻找数组的中心下标 - 力扣(LeetCode)

题目描述

在这里插入图片描述


题目示例

在这里插入图片描述

解法(前缀和):

算法思路:

从中心坐标的定义可知,除中心下标的元素外,该元素左边的【前缀和】等于该元素右边的【后缀和】。

  • 因此,我们可以预处理出来两个数组,一个表示前缀和,另一个表示后缀和。
  • 然后,我们可以用一个 for 循环枚举可能的中心下标,判断每一个位置的【前缀和】以及【后缀和】。如果二者相等,就返回当前下标。

C++算法代码:

classSolution{public:intpivotIndex(vector<int>& nums){int n=nums.size(); vector<int>f(n),g(n);//f[0]=0,g[n-1]=0;//可以不写,默认为0for(int i=1;i<n;i++) f[i]=f[i-1]+nums[i-1];for(int i=n-2;i>=0;i--) g[i]=g[i+1]+nums[i+1];for(int j=0;j<n;j++){if(f[j]==g[j])return j;}return-1;}};

算法总结&&笔记展示:

笔记字有点丑,大家见谅:

在这里插入图片描述

28. 除自身以外数组的乘积

题目链接

238. 除自身以外数组的乘积 - 力扣(LeetCode)

题目描述

在这里插入图片描述


题目示例

在这里插入图片描述

解法(前缀和数组):

算法思路:

注意题目的要求,不能使用除法,并且要在 O(N) 的时间复制度内完成该题。那么我们就不能使用暴力的解法,以及求出整个数组的乘积,然后除以单个元素的方法。
继续分析,根据题意,对于每一个位置的最终结果 ret[i] ,它是由两部分组成的:

  • nums[0] * nums[1] * nums[2] * …… * nums[i-1]
  • nums[i+1] * nums[i+2] * …… * nums[n-1]

于是,我们可以利用前缀和的思想,使用两个数组post和suf,分别处理出来两个信息:

  • post表示:i位置之前的所有元素,即【0,i-1】区间内所有元素的前缀乘积
  • suf表示:i位置之后的所有元素,即【i+1,n-1】区间内所有元素单独后缀乘积

然后再处理最终结果。

C++算法代码:

classSolution{public: vector<int>productExceptSelf(vector<int>& nums){int n=nums.size(); vector<int>f(n),g(n),ret(n); f[0]=1,g[n-1]=1;for(int i=1;i<n;i++) f[i]=f[i-1]*nums[i-1];for(int j=n-2;j>=0;j--) g[j]=g[j+1]*nums[j+1];for(int i=0;i<n;i++){ ret[i]=f[i]*g[i];}return ret;}};

算法总结&&笔记展示:

笔记字有点丑,大家见谅:

在这里插入图片描述

结语:

🍓 我是草莓熊 Lotso!若这篇技术干货帮你打通了学习中的卡点: 👀 【关注】跟我一起深耕技术领域,从基础到进阶,见证每一次成长 ❤️ 【点赞】让优质内容被更多人看见,让知识传递更有力量 ⭐ 【收藏】把核心知识点、实战技巧存好,需要时直接查、随时用 💬 【评论】分享你的经验或疑问(比如曾踩过的技术坑?),一起交流避坑 🗳️ 【投票】用你的选择助力社区内容方向,告诉大家哪个技术点最该重点拆解 技术之路难免有困惑,但同行的人会让前进更有方向~愿我们都能在自己专注的领域里,一步步靠近心中的技术目标! 

结语:本文介绍了两个关于数组前缀和与后缀和的算法问题。第一个问题是寻找数组的中心下标,通过预处理前缀和与后缀和数组,找到左右和相等的中心位置。第二个问题是计算除自身以外数组的乘积,同样利用前缀积和后缀积数组,避免使用除法实现高效求解。两种方法都通过预处理数组优化时间复杂度至O(N),适合处理类似问题。

✨把这些内容吃透超牛的!放松下吧✨ʕ˘ᴥ˘ʔづきらど

Read more

OpenClaw 刚配好就完了?5 步调教,让你的 AI 助手真正“能干活”

OpenClaw 刚配好就完了?5 步调教,让你的 AI 助手真正“能干活”

很多人装完 OpenClaw,接上 Discord 或 Telegram,发现能聊天了就觉得“搞定了”。 但我自己踩坑一圈后,越来越确定一件事:默认状态的 OpenClaw,可能只发挥了 20% 的能力。剩下的 80%,藏在一些你没太注意的配置文件里——而且改起来并不难。 下面我按“收益从高到低”的顺序,把我自己最有效的 5 步调教方法整理出来。新手照着做,大概率能立刻感受到差别。 默认状态 vs 调教后:差别到底在哪? 先给你一个直观对比,方便建立预期: 项目默认状态调教后回复风格客服味:“我很乐意帮助您!”更像懂你的搭档记忆每次对话都像陌生人记得你们之前聊过什么能力只能聊天能下载视频、查股票、做 PPT、巡检服务器…主动性你不说它不动会定期检查状态,主动提醒成本/效率所有任务都用同一个模型复杂任务用强模型,简单活用便宜模型 如果你只做一件事:先把第 1 步和第 2 步做了,

By Ne0inhk

本地跑AI大模型,到底需要什么电脑配置?

在本地部署和运行大型语言模型(LLM)已成为许多开发者、研究者和爱好者的需求。与依赖云端API不同,本地运行能更好地保障数据隐私、实现定制化优化,并提供不受网络限制的稳定体验。然而,这背后对电脑硬件提出了明确的要求。本文将以一台典型的主机为例,系统性地拆解各个核心组件——主板、CPU、显卡、内存和硬盘——如何影响大模型本地运行的流畅度与性能,并给出具体的配置建议。 一、硬盘:模型的“仓库”,速度与容量并重 硬盘是存储模型文件的物理载体,因此首要条件是容量必须足够装下模型。当前主流开源模型的大小通常在几GB到几十GB之间(例如 7B、13B、70B 参数模型),而现代电脑标配的 SSD 至少为 512GB 或 1TB,容量方面一般不是瓶颈。 但在选购时需特别注意两点: 1. 务必选择固态硬盘(SSD),而非机械硬盘(HDD) * HDD 的读写速度通常只有 100–200 MB/s。

By Ne0inhk
人工智能:自然语言处理在金融领域的应用与实战

人工智能:自然语言处理在金融领域的应用与实战

自然语言处理在金融领域的应用与实战 学习目标 💡 理解自然语言处理(NLP)在金融领域的应用场景和重要性 💡 掌握金融领域NLP应用的核心技术(如文本分类、情感分析、风险评估) 💡 学会使用前沿模型(如BERT、GPT-3、Transformer)进行金融文本分析 💡 理解金融领域的特殊挑战(如数据敏感性、实时性要求高、语言专业性强) 💡 通过实战项目,开发一个金融新闻情感分析应用 重点内容 * 金融领域NLP应用的场景 * 核心技术(文本分类、情感分析、风险评估) * 前沿模型(BERT、GPT-3、Transformer)在金融领域的使用 * 金融领域的特殊挑战 * 实战项目:金融新闻情感分析应用开发 一、金融领域NLP应用场景 1.1 金融文本分析概述 金融领域是NLP技术应用的重要领域之一。金融文本数据包括新闻报道、公司公告、分析师报告、社交媒体评论等,这些数据蕴含着丰富的信息,可以帮助金融机构和投资者了解市场动态、评估风险、做出决策。 1.1.

By Ne0inhk