程序员面试题精选100题(03)-子数组的最大和

Wireshark保姆级安装与抓包实战:从零到精通的网络分析指南 网络协议分析是网络工程师、运维和开发人员进行故障排查与性能优化的核心技术。其核心原理在于捕获并解析流经网络接口的数据包,从而透视网络通信的完整过程。掌握这项技术对于诊断连接问、分析应用性能、理解协议交互具有不可替代的价值,广泛应用于网络运维、安全分析、应用开发调试等场景。Wireshark作为业界标准的开源网络协议分析工具,集成了强大的捕获引擎与直观的图形界面,是实现这一技术的关键。本文聚焦于Wireshark在Windows平台的核心安装逻辑,深入解析其依赖的Npcap驱动组件,并详细指导如何以管理员权 阅读详情

程序员面试题精选100题(03)-子数组的最大和

题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)

例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18

分析:本题最初为2005年浙江大学计算机系的考研题的最后一道程序设计题,在2006年里包括google在内的很多知名公司都把本题当作面试题。由于本题在网络中广为流传,本题也顺利成为2006年程序员面试题中经典中的经典。

如果不考虑时间复杂度,我们可以枚举出所有子数组并求出他们的和。不过非常遗憾的是,由于长度为n的数组有O(n2)个子数组;而且求一个长度为n的数组的和的时间复杂度为O(n)。因此这种思路的时间是O(n3)

解法一:

很容易理解,当我们加上一个正数时,和会增加;当我们加上一个负数时,和会减少。如果当前得到的和是个负数,那么这个和在接下来的累加中应该抛弃并重新清零,不然的话这个负数将会减少接下来的和。基于这样的思路,我们可以写出如下代码。

代码如下:

#include<iostream>
using namespace std;

int FindGreatestSumOfSubArray(int *pData,unsigned int nLength,int &nGreatestSum)
{
  if((pData==NULL)||(nLength==0))
   return false;
  int nCurSum=nGreatestSum=0;
  for(unsigned int i=0;i<nLength;++i)
  {
    nCurSum+=pData[i];
 if(nCurSum<0)
  nCurSum=0;
 if(nCurSum>nGreatestSum)
  nGreatestSum=nCurSum;
  }
  if(nGreatestSum==0)
  {
    nGreatestSum=pData[0];
 for(unsigned int i=1;i<nLength;i++)
 {
   if(pData[i]>nGreatestSum)
        nGreatestSum=pData[i];
 }
  }
  return nGreatestSum;
}

int main()
{
 int a[7]={-1,1,5,-6,7,9,-4};
 int b;
    cout<<FindGreatestSumOfSubArray(a,7,b)<<endl;
 return 0;
}

 


解法二: 应用动态规划法

动态规划:设sum[i] 为前i个元素中,包含第i个元素且和最大的连续子数组,result 为已找到的子数组中和最大的。对第i+1个元素有两种选择:做为新子数组的第一个元素、放入前面找到的子数组。
sum[i+1] = max(a[i+1], sum[i] + a[i+1])
result = max(result, sum[i])


ENVI 5.6安装全指南:系统环境、运行库与许可证配置详解 ENVI作为专业遥感图像处理平台,其稳定运行高度依赖底层系统环境与组件协同。理解IDL引擎、Visual C++运行库、.NET Framework等核心依赖的版本匹配逻辑,是解决‘License not found’‘Failed to initialize IDL VM’等典型故障的前提。技术价值在于规避因环境失配导致的闪退、崩溃与数据加载失败,保障Landsat 8、Sentinel-2等主流遥感影像的波段合成、地理配准与NDVI计算等基础流程闭环。适用于高校地信教学实验部署与科研工作站批量安装场景, 阅读详情

相关推荐

Matlab 2024a安装避坑指南:系统兼容性、许可证激活与静默部署全解析

MATLAB安装并非简单点击‘下一步’,而是一项涉及操作系统底层机制的工程实践。其核心在于理解安装程序与Windows系统组件(如.NET Runtime、AppContainer沙盒、Windows Defender)之间的交互原理;技术价值体现在规避License校验失败、OpenGL崩溃、路径权限异常等高频故障;典型应用场景覆盖高校数学建模教学部署、实验室批量装机及CI/CD自动化集成;尤其在Matlab 2024a版本中,因许可证验证机制重构和本地激活策略收紧,系统预检、.NET 6.0运行依赖、

weixin_30673611的博客 317

OpenClaw本地智能体工作台:Windows一键部署AI自动化流水线

本地智能体(Local Agent)是近年来AI工程化落地的关键范式,其核心在于将大模型能力与本地工具链深度集成,实现离线、可控、低延迟的自动化决策。OpenClaw作为面向Windows平台的轻量级本地智能体运行,通过封装.NET 6+Python嵌入式运行+llama.cpp推理引擎,规避了传统Python环境依赖与CUDA驱动冲突问,显著降低Agent部署门槛。它支持技能(Skill)沙盒调用、JSON声明式工作流编排、OpenAI兼容API及飞书/Webhook等企业级集成,适用于工业质检、会

weixin_30482181的博客 326

Ubuntu 22.04 安装 MATLAB R2025a 兼容性指南

MATLAB 是广泛使用的科学计算与工程仿真平台,其 Linux 版本对底层运行环境有严格依赖。理解 glibc、libstdc++ 符号版本、Java TLS 协议支持及 X11 图形子系统等核心原理,是保障安装与稳定运行的关键技术基础。这些依赖不仅影响安装器启动,更决定后续 Simulink 编译、Python 接口调用、中文路径处理等工程实践效果。在 Ubuntu 22.04 这一主流 LTS 发行版上,由于内核 ABI 演进、OpenSSL 3.0 FIPS 策略升级及 GNOME Wayland

weixin_30444105的博客 538

第14章 设计模式入门:单例、工厂、建造者与代理

设计模式是"在特定场景下反复被验证的解决方案"。创建型(怎么创建对象:单例、工厂、建造者)、结构型(怎么组合类与对象:代理、装饰器)、行为型(怎么分配职责、怎么协作:观察者、策略)。本章主角是创建型 3 个 + 结构型 1 个(代理)+ 行为型 1 个(观察者)。设计模式解决的典型痛点:代码重复、难以修改、到处 new 导致耦合(耦合指类与类之间依赖太深,改一个要动一片)。// 反面教材:创建"形状"的逻辑散落在各处,每处都要写一遍 if-elseSystem.out.println("画一个圆")

成熟的标题 238

大厂 MCP 面试实录:将内部 REST API 封装为可审计 MCP Tools 的设计与实践

本文采用模拟面试形式,复盘企业级场景下将内部 REST API 封装为可审计 MCP Tools 的核心考察点与落地实践。 面试官 :今天的业务场景是:公司内部有上百个稳定的业务 REST API,需要封装成 MCP Tools 供给内部。

a3258264204的博客 190

单链表进阶实操:5 道常考面试题详细解析【Java 实现】

单链表是Java后端、算法面试中的高频必考知识点,多数面试官重点考察链表遍历、反转、查找、合并等核心算法。本文针对新浪、腾讯、百度大厂经典面试,手把手讲解5个单链表核心实操算法,包含统计有效节点个数、查找倒数第K个节点、单链表整体反转、栈实现链表逆序打印、两个有序单链表合并排序。 文章所有案例均提供完整可运行Java源码,拆解每道的解思路、实现逻辑与踩坑要点,摒弃复杂晦涩的理论堆砌,以实战代码落地为主。同对比不同解方案的优劣,帮助大家彻底吃透单链表基础算法,轻松应对面试手撕代码场景,快速提升算法

我的梦想有多远,我就能走多远! 205

从零理解 AI Agent:概念、ReAct、Prompt 五要素与面试要点

很多人一上来就打开 LangChain、Eino 之类的仓库,结果越看越懵。其实Agent 本身并不神秘,复杂的是工程实现。Agent = 会围绕目标,自己决定要不要用工具,并动手完成工作的 AI 助手。普通聊天机器人:主要「动嘴」——你问一句,它回一句。Agent:不但会说话,还会「动手」——需要去查天气、算数、搜文档、调 API,再根据真实结果回答你。Agent 到底是什么(生活类比)LLM、工作流、Agent 的区别Agent 由哪些部分构成ReAct 推理模式是什么、怎么实现。

lihaoweiwudi_的博客 238

第37篇 · Vol.1·M5:推理优化

参考答案训练:并行计算,所有 token 同算,GPU 利用率高,计算密集。推理Prefill(预填充):处理用户 prompt(如 1000 token),一次并行算所有 K/V,计算密集,GPU 利用率高。Decode(解码):逐个生成新 token,每步只新增 1 个 token,但要读取所有模型参数 + 完整 KV Cache。计算量小但读取量大,显存带宽密集,GPU 利用率低。为什么 Decode 是带宽密集。

weixin_41870061的博客 19

2026年牛客网Java 高频面试题总结(秋招、金九银十通用)

2026年的互联网行业竞争越来越严峻,面试也是越来越难,一直以来我都想整理一套完面试宝典,奈何难抽出间,这套1000+道的Java面试手册我整理了整整1个月,上传到Git上目前star数达到了30K+这套互联网面试题包括了:MyBatis、ZK、、EL、Redis、MySQL、并发编程、Java面试、Spring、微服务、Linux、Springboot、、MQ、Kafka面试(共485页,32W字)有需要的可以在文末获取。

sjkflw121150的博客 171

第33篇 · Vol.1·M1:LLM 基础与 Transformer

这个模块是整个 LLM 面试的地基:Attention 缩放、RoPE 位置编码、RMSNorm/Pre-Norm、Decoder-only 架构、KV Cache、FlashAttention、Scaling Law 与 Chinchilla 法则。算法岗必考,应用岗和工程岗也常被抽查前几面试官靠这几判断你懂不懂底层。目以 ⭐ 高频为主,几乎每场必问,要练到肌肉记忆的程度。对应学习篇 S1《大模型基础原理》,见本专栏第 3-5 篇。(核心知识点,具体到术语、数字、因果关系,不写废话)+

weixin_41870061的博客 124

软件测试面试八股文【2026最新版】

是指把一个具体的页面转化为编程语言当中的一个对象,页面特性转化成对象属性,页面操作转化为对象方法。1)通俗来讲把每个页面当成一个对象,页面层写定位元素方法和页面操作方法2)用例层从页面层调用操作方法,写成用例3)可以做到定位元素与脚本的分离4)主要用来实现对页面操作和测试逻辑的一个分离。

zhangsiyuan1998的博客 229

快速幂算法详解与实战

快速幂是中大厂面试中。

禹凕的博客 224

27届大模型面试准备(七十五):检索增强生成与强化学习联合优化——RAG-RL、Self-RAG 与 GRPO 训检索

把"检索哪几个模态、retrieval_top_k、是否重检、融合权重"参数化为策略可输出,用 ViDoSeek/SlideVQA 的答案正确率 + 计算复杂度(你论文里已有复杂度分析章节)当 reward,GRPO 联合优化,就能把"人工调参"升级成"数据驱动自调"。Self-RAG 在词表里插入特殊 token:Retrieve / NoRetrieve / IsREL / IsSUP / IsUSE,让模型先判断"是否需要检索""检索结果是否相关""答案是否有支撑",再生成。

thesky123456的博客 222

行研高质量学习资料+面试资料

附百度网盘链接gj89xtMQ…MTI5OTY3ODE0Ny4xNzg3OTg4NjEyczE3ODc5ODg2MTAkbzEkZzAkdDE3ODc5ODg2MTAkajYwJGwwJGgw。

qq_42865713的博客 183

Agent测试面试第一篇:Agent 基础原理与黑盒测试

<think>我们被要求根据给定内容生成一个≤150字的文章摘要。内容是关于Agent黑盒测试的,包括关键机制、测试方法、面试表达等。摘要需要概括核心要点。注意字数限制,要精炼。 首先理解内容:文章分章节,讲Agent黑盒测试的目标、判定框架(结果正确性、数据可信性、行为合理性、安全合规性、稳定终止性),上下文窗口、消息类型、工具调用、RAG等。但摘要只需概括整体。 我们应提取最关键信息:从黑盒视角测试Agent,验证行为正确、安全、稳定、可追踪;重点测工具调用、权限、上下文管理等;面试表达要专业。 字数≤

weixin_44872675的博客 351

15 硬件工程师笔面试高频考点真解析——晶振

本文系统介绍了晶振的核心参数、选型与设计要点,涵盖无源晶振(频率、负载电容CL、ESR、激励功率)和有源晶振(供电电压、输出电平、相位噪声等)的关键指标差异。无源晶振成本低但依赖外部匹配,适合普通MCU;有源晶振集成度高、稳定性强,适用于高速通信(WiFi/USB)、射频及多芯片同步场景。文中对比了XO、TCXO、OCXO的温补精度与适用领域,并给出PCB布线规则(短走线、包地隔离)及不起振排查方法(参数匹配、干扰排查)。特别指出32.768kHz因分频便利和低功耗成为RTC首选,而高速接口需有源晶振

XU157303764的博客 1870

第48篇 · Vol.6·下:自检 118 问 + 反追问应对手册 + 按面试轮次准备清单

本篇是 Vol.6 下半部分,也是全专栏收官,分三块:Part C 自检 118 问、Part D 反追问应对手册、Part E 按面试轮次准备清单。日常查漏每周过一遍 Part C,能不卡壳讲清才算过,打 ✅/❌,❌ 的按括号里的篇号号回去补。临考 3 天背熟第 47 篇的 48 张速记卡、把本篇 Part D 过一遍;临考 1 天再按 Part E 对着你要面的轮次重点准备。

weixin_41870061的博客 212

27届大模型面试准备(七十六):大模型推理服务高可用与容灾工程——多副本、故障切换与优雅降级

A61 讲了延迟吞吐剖析,A69 讲了 PD 分离,A70 讲了负载均衡与路由,B70 讲了智能体级联熔断。本篇把"推理服务怎么不死、挂了怎么秒切、过载怎么不雪崩"做成一套完整的生产级高可用(HA)工程。模型部署到线上,GPU 会掉卡、进程会 OOM、网络会抖动,没有 HA 设计,一次故障就是一次线上事故。前文链接:A61 服务可观测性与延迟吞吐剖析、A69 Prefill-Decode 分离、A70 推理服务负载均衡与智能请求路由、B70 级联故障防护熔断与自愈。一、副本编排与流量路由。

thesky123456的博客 161
上一篇: 程序员面试题精选100题(07)-翻转句子中单词的顺序
下一篇: c++中tr1::bind和tr1::function讲解
快乐的霖霖
博客等级 码龄15年 1028粉丝 904原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值