​欢迎光临小站:致橡树

和为K的子数组

给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 

子数组是数组中元素的连续非空序列。

示例 1:

输入:nums = [1,1,1], k = 2
输出:2

示例 2:

输入:nums = [1,2,3], k = 3
输出:2

提示:

  • 1 <= nums.length <= 2 * 104

  • -1000 <= nums[i] <= 1000

  • -107 <= k <= 107

解题思路

双循环枚举(暴力法)

核心思想

枚举所有可能的连续子数组,计算它们的和,统计和等于 K 的子数组数量

解题步骤
  1. 外层循环遍历起始位置

    for (int i = 0; i < nums.length; i++) {
    • 变量 i 表示子数组的起始位置

    • 从数组的第一个元素开始,逐步移动到最后一个元素

  2. 内层循环遍历结束位置

    for (int j = i; j < nums.length; j++) {
    • 变量 j 表示子数组的结束位置

    • 从起始位置 i 开始,逐步扩展到数组末尾

  3. 计算子数组和

    sum += nums[j];
    • sum 变量累计从 ij 的元素和

    • 每次内层循环添加一个新元素到当前子数组

  4. 检查和是否等于 K

    if (sum == k) {num++;
    }
    • 当子数组和等于目标值 K 时,计数器 num 增加 1

完整代码
class Solution {public int subarraySum(int[] nums, int k) {int num = 0;for (int i = 0; i < nums.length; i++) {int sum = 0;for (int j = i; j < nums.length; j++) {sum += nums[j];if (sum == k) {num++;}}}return num;}
}

爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 12 个台阶。你有多少种不同的方法可以爬到楼顶呢?

示例 1:

输入:n = 2
输出:2
解释:有两种方法可以爬到楼顶。
1. 1 阶 + 1 阶
2. 2 阶

示例 2:

输入:n = 3
输出:3
解释:有三种方法可以爬到楼顶。
1. 1 阶 + 1 阶 + 1 阶
2. 1 阶 + 2 阶
3. 2 阶 + 1 阶

提示:

  • 1 <= n <= 45

解题思路

这段代码是解决"爬楼梯"问题的动态规划实现。问题描述是:每次可以爬1或2个台阶,问爬到第n个台阶有多少种不同的方法。

规律发现

观察 n=1n=4 的结果:

  • n=1 → 1 种(1

  • n=2 → 2 种(1+12

  • n=3 → 3 种(见上例)

  • n=4 → 5 种(自己试试列举)

发现了吗?从第3阶开始,方法数 = 前两阶方法数之和
即:f(n) = f(n-1) + f(n-2)(比如 f(3)=f(2)+f(1)=2+1=3

步骤分解

  1. 初始化变量

    • a = 1:表示到达第1个台阶有1种方法(1步)

    • b = 2:表示到达第2个台阶有2种方法(1+1步或直接2步)

    • c = a + b = 3:表示到达第3个台阶的方法数

  2. 基本情况处理

    • 如果n=1,直接返回1

    • 如果n=2,直接返回2

  3. 循环计算

    • 对于n≥3的情况,通过循环计算:

      • 每次迭代将变量向前移动:a取b的值,b取c的值,然后计算新的c=a+b

      • 这个循环会执行n-3次

      • 最终c的值就是到达第n个台阶的方法数

class Solution {public int climbStairs(int n) {int a = 1;int b = 2;int c = a + b;if (n == 1) {return a;}if (n == 2) {return b;}while (n - 3 > 0) {a = b;b = c;c = a + b;n--;}return c;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/98718.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/98718.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/98718.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

day40 SQLite3单词查询程序设计与实现

day40 SQLite3单词查询程序设计与实现 核心知识点 SQLite3 C接口应用&#xff1a;使用sqlite3_open、sqlite3_exec等函数操作数据库回调函数机制&#xff1a;通过回调函数处理查询结果集SQL语句构建&#xff1a;动态生成SELECT、INSERT等SQL语句事务处理&#xff1a;使用BEGIN …

GitHub 热榜项目 - 日榜(2025-09-08)

GitHub 热榜项目 - 日榜(2025-09-08) 生成于&#xff1a;2025-09-08 统计摘要 共发现热门项目&#xff1a;17 个 榜单类型&#xff1a;日榜 本期热点趋势总结 本期GitHub热榜呈现三大技术趋势&#xff1a;AI智能体与LLM应用持续爆发&#xff08;emcie-co/parlant、coleam00…

设计模式-工厂方法原型模板方法外观

设计模式概述 - 工厂方法 & 原型 & 模板方法 & 外观 工厂方法模式简述 工厂方法模式&#xff08;Factory Method Pattern&#xff09;是一种创建型设计模式&#xff0c;它定义了一个用于创建对象的接口&#xff0c;但由子类决定实例化哪个类。工厂方法将类的实例化…

推动检测认证行业迈向智能化 AITIC一体机发布会在京举办

来源&#xff1a;新华社客户端国家市场监督管理总局认证认可技术研究中心(简称“认研中心”)近日联合技术合作伙伴在北京举办AITIC软硬件一体机发布会。据了解&#xff0c;“AITIC一体机”是专为检测认证行业设计的智能硬件&#xff0c;提供低成本的本地化部署方案&#xff0c;…

权限即数据:企业系统中的字段级访问控制架构实战(β=0.6)

摘要 这篇文章介绍了一个企业系统中的字段权限解析方案&#xff0c;通过规则表与命中记录表&#xff08;biz_rule_hit&#xff09;联动&#xff0c;实现对业务数据的动态权限控制。流程包括替换用户上下文变量、记录命中规则、查询业务数据并关联命中信息&#xff0c;最终在内存…

Python爬虫实战:研究Specialty Plots模块,构建空气质量监测数据采集和分析系统

1. 引言 1.1 研究背景 随着全球城市化进程的加速和工业的快速发展,空气质量问题已成为影响人类健康和生态环境的重要因素。世界卫生组织数据显示,全球超过 90% 的人口生活在空气质量超标的环境中,空气污染每年导致约 700 万人过早死亡。准确、及时地获取和分析空气质量数据…

字典树算法

一、什么是Trie&#xff1f; Trie&#xff08;发音为"try"&#xff09;&#xff0c;也称为字典树、前缀树&#xff0c;是一种多叉树结构&#xff0c;专门用于高效存储和检索字符串集合。其核心特点是共享字符串的公共前缀&#xff0c;从而大幅减少冗余存储&#xff0…

Laya使用VideoNode动态加载视频,可以自定义播放视频此处以及位置

export class VideoCommand {video: Laya.VideoNode;public duration: number 0;/*** param videoPos 视频位置* param videoSize 视频大小*/public constructor(videoPos: Laya.Vector2, videoSize: Laya.Vector2) {this.video new Laya.VideoNode;//添加到舞台 1是场景中的…

yum localinstall安装本地包

yum localinstall 是一个用于安装本地 RPM 包并自动处理依赖关系的命令。当你有一个或多个本地的 RPM 包需要安装,又希望 yum 能帮你解决可能存在的依赖问题时,这个命令就非常有用。下面我会详细解释它的用法和注意事项。 🖥️ 命令基本用法 yum localinstall 命令的基本…

LeetCode 面试经典 150 题:轮转数组(三次翻转法详解 + 多解法对比)

在数组类算法题中&#xff0c;“轮转数组” 是一道考察 “原地操作” 与 “逻辑转换” 能力的经典题目。所谓 “轮转”&#xff0c;是指将数组元素向右移动指定步数&#xff0c;且超出数组长度的元素需 “循环” 到数组开头。这道题的最优解 ——三次翻转法&#xff0c;能以 O …

网络编程---TCP

1.TCP&#xff1a;传输控制协议&#xff0c;位于传输层2.TCP的特性&#xff1a;a.使用流式套接字&#xff0c;数据连续&#xff0c;有顺序b.TCP是可靠传输&#xff0c;有有应答机制ACK&#xff0c;即收到数据后会明确告知发送方已收到数据&#xff1b;若发送方没有在预计时间收…

对计算机网络模型的理解

文章目录 目录 前言 一、Internet 的核心特点 二、Internet 的组成结构 1. 硬件基础&#xff1a;网络运行的 “物理载体” 2. 软件支撑&#xff1a;网络运行的 “功能桥梁” 3. 协议规则&#xff1a;网络运行的 “通用语言” 三、OSI 七层参考模型&#xff08;理论标准&…

每日一算:分发糖果

在算法面试中&#xff0c;“分发糖果” 是一道经典的贪心算法应用题&#xff0c;核心考察对 “局部最优推导全局最优” 的理解。本文将从问题分析出发&#xff0c;提供两种主流解题思路&#xff0c;并附上 C 实现代码&#xff0c;帮助你彻底掌握这道题。一、问题重述题目要求有…

【WorkManager】无法在 Direct Boot 模式下初始化

【WorkManager】无法在 Direct Boot 模式下初始化一、问题描述二、问题分析2.1 关于 Direct Boot 模式2.2 支持 Direct Boot 模式2.3 手动初始化 WorkManager 组件2.4 WorkManager 不支持 Direct Boot 的官方修改三、解决方案一、问题描述 在使用 WorkManager 库来实现开机上报…

Hybrid应用性能优化实战分享(本文iOS 与 H5为例,安卓同理)

前言在移动应用开发中&#xff0c;Hybrid 架构因其跨平台特性和开发效率优势被广泛采用。然而&#xff0c;WebView 的性能问题一直是开发者面临的挑战。本文将基于实际项目经验&#xff0c;分享 iOS Hybrid 应用的核心优化策略&#xff0c;涵盖 WebView 池化、预加载、用户体验…

点积、叉积、矩阵行列式详解、线性相关与线性无关、矩阵的秩、矩阵可逆与不可逆详解

1.向量 1.1 点积&#xff08;Dot Product&#xff09; 1.1.1 定义 点积是在求一个标量&#xff0c;点积结果没有方向。 对于两个向量u(u1,u2,u3),v(v1,v2,v3)\bold{u}(u_1,u_2,u_3),\bold{v}(v_1,v_2,v_3)u(u1​,u2​,u3​),v(v1​,v2​,v3​) 点积定义为&#xff1a;u⋅vu1v1u…

Mac安装nvm详细教程(超简单)

本章教程,主要介绍如何在Mac操作系统上安装nvm. 我们使用官方一键安装脚本,完成安装 一、安装步骤 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash配置环境变量,编辑.zshrc文件 vim .zshrcexport NVM_DIR="$(

【selenium】网页元素找不到?从$(‘[placeholder=“手机号“]‘)说起

网页元素找不到&#xff1f;从$(‘[placeholder“手机号”]’)说起总结&#xff1a;控制台不骗人&#xff0c;元素选不到&#xff0c;八成是写法、时机或环境的问题。我们在写网页自动化脚本或者调试页面的时候&#xff0c;经常遇到一个让人头疼的问题&#xff1a;明明元素就在…

SSE 模仿 GPT 响应

后端代码 const express require(express) const cors require(cors);const app express(); app.use(cors()); const port 3000;app.listen(port, () > {console.log(Server running at http://localhost:${port}/); });const msg 全国同胞们&#xff0c; 尊敬的各位国…

MAC 多个版本 JDK进行切换

1.查看本机所有的jdk/usr/libexec/java_home -V2、打开bash_profile文件。可以在终端vim ~/.bash_profile打开&#xff0c;也可以打开访达shiftcmdG然后输入/Users/mac/.bash_profile&#xff08;本机bash_profile的路径&#xff09;加入新的环境变量格式如下&#xff08;参考我…