华为高频算法题:最长连续递增子序列(Longest Continuous Increasing Subsequence)

文章目录

    • 前言
    • 题目描述(华为校招真题)
    • 解题思路分析
    • Java 实现代码
    • 单元测试代码
    • 结语

前言

在各大互联网公司的算法面试中,数组类题目一直是考察的重点,尤其是对于应届生和初级工程师的面试来说更是常见题型。华为作为国内顶尖的科技企业,在校招和社招中也经常考察这类基础但极具代表性的题目。本题“最长连续递增子序列”是一道典型的数组遍历与状态维护问题,虽然难度适中,但却能很好地考察候选人对边界条件的处理能力、逻辑思维的严谨性以及代码的简洁性和可读性。

在这里插入图片描述

题目描述(华为校招真题)

给定一个无重复元素的整数数组 nums,返回最长连续递增子序列的长度。
连续递增子序列定义为:数组中连续的一段元素 [i, i+1, i+2, …, j],满足 nums[i] < nums[i+1] < … < nums[j]。
示例:

输入: nums = [1,3,5,4,7]
输出: 3
解释: 最长的连续递增子序列是 [1, 3, 5],长度为 3。输入: nums = [2,2,2,2]
输出: 1
解释: 每个元素都是独立的递增序列。

解题思路分析

我们可以采用一次遍历的方式解决该问题
1、初始化两个变量maxLength(记录最长递增序列的长度)、currentLength(当前递增序列的长度);
2、从第二个元素开始遍历数组如果当前元素大于前一个元素,则 currentLength++,否则重置 currentLength = 1,每次更新 maxLength;
3、算法时间复杂度:O(n),空间复杂度:O(1)

Java 实现代码

/*** LongestContinuousIncreasingSubsequence* @author senfel* @version 1.0* @date 2025/7/23 11:54*/
public class LongestContinuousIncreasingSubsequence {/*** findLengthOfLCIS* @param nums* @author senfel* @date 2025/7/23 11:55 * @return int*/public int findLengthOfLCIS(int[] nums) {// 验证是否为空if (nums == null || nums.length == 0) {return 0;}//最长递增序列的长度int maxLength = 1;//当前递增序列的长度int currentLength = 1;for (int i = 1; i < nums.length; i++) {if (nums[i] > nums[i - 1]) {currentLength++;maxLength = Math.max(maxLength, currentLength);} else {currentLength = 1;}}return maxLength;}
}

单元测试代码

/*** LongestContinuousIncreasingSubsequenceTest* @author senfel* @version 1.0* @date 2025/7/23 12:02*/
public class LongestContinuousIncreasingSubsequenceTest {private final LongestContinuousIncreasingSubsequence solution = new LongestContinuousIncreasingSubsequence();@Testpublic void testBasicCase1() {int[] nums = {1, 3, 5, 4, 7};assertEquals(3, solution.findLengthOfLCIS(nums));}@Testpublic void testAllSameElements() {int[] nums = {2, 2, 2, 2};assertEquals(1, solution.findLengthOfLCIS(nums));}@Testpublic void testEmptyArray() {int[] nums = {};assertEquals(0, solution.findLengthOfLCIS(nums));}@Testpublic void testSingleElement() {int[] nums = {5};assertEquals(1, solution.findLengthOfLCIS(nums));}@Testpublic void testFullyIncreasing() {int[] nums = {1, 2, 3, 4, 5};assertEquals(5, solution.findLengthOfLCIS(nums));}@Testpublic void testMultipleSegments() {int[] nums = {1, 2, 5, 3, 4, 6, 2, 3, 4, 5};assertEquals(4, solution.findLengthOfLCIS(nums));}
}

结语

这道题是华为校招中常考的基础算法题之一,虽然难度不高,但能考察候选人的代码简洁性、边界处理能力、单元测试意识等多方面素质。建议大家在练习时不仅要写出正确代码,在实际的面试过程中注意编写完整的单元测试,并考虑边界情况(空数组、单个元素、全等元素)尽量写出可读性强的代码。

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

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

相关文章

JavaSE-图书信息管理系统

目录 前置知识点 项目部署说明 项目运行截图 项目结构展示 项目编写构思 book包 Book类 Booklist类 ioperations包 IOPeration接口 AddOperation类 BorrowOperation类 DelOperation类 FindOperation类 ReturnOperation类 ShowOperation类 ExitOperation类 use…

网络 IP 地址总结

网络IP地址总结 一、IPv4地址核心分类与特殊网段 IPv4地址是32位二进制数&#xff08;通常表示为4组0-255的十进制数&#xff0c;即“点分十进制”&#xff09;&#xff0c;总地址空间约43亿个。根据用途可分为公有地址&#xff08;公网使用&#xff0c;全球唯一&#xff09;和…

【C++进阶】第7课—红黑树

文章目录1. 认识红黑树1.1 红黑树的规则1.2 红黑树如何确保最长路径不超过最短路径的2倍呢?1.3 红黑树的效率2. 实现红黑树2.1 红黑树的结构2.2 红黑树的插入2.2.1 第一种情况:插入节点的父节点和其uncle节点都为红色&#xff0c;且uncle节点存在2.2.2 第2种情况:插入节点cur和…

解决 SQL 错误 [1055]:深入理解 only_full_group_by 模式下的查询规范

在日常的 SQL 开发中&#xff0c;你是否遇到过这样的报错&#xff1a;SQL 错误 [1055] [42000]: Expression #N of SELECT list is not in GROUP BY clause and contains nonaggregated column...&#xff1f;尤其是在 MySQL 5.7 及以上版本中&#xff0c;这个错误更为常见。本…

Keepalived 原理及配置(高可用)

一、Keepalived 原理keepalived 基于 VRRP&#xff08;虚拟路由冗余协议&#xff09;实现高可用。核心原理是通过竞选机制在多台服务器&#xff08;主 / 备节点&#xff09;中选举出一台主节点承担服务&#xff0c;同时备节点持续监控主节点状态&#xff1a;主节点正常时&#…

从代码混乱到井然有序:飞算JavaAI的智能治理之道

文章目录一、前言二、飞算JavaAI平台三、飞算JavaAI安装流程3.1 Idea安装配置3.2 官网注册登入四、飞算JavaAI独特魅力:合并项目场景4.1 ERP老项目精准翻新&#xff1a;保留核心逻辑的智能改造方案4.2 智能合并&#xff1a;重构ERP系统的代码迷宫4.3 ERP接口智能导航&#xff1…

iOS打开开发者模式

启用开发者模式的方法在iOS设备上启用开发者模式通常需要连接Xcode或通过设置手动开启&#xff0c;以下是具体步骤&#xff1a;通过Xcode启用将iOS设备通过USB线连接到Mac电脑。打开Xcode&#xff08;需提前安装&#xff09;。在Xcode的菜单栏中选择 Window > Devices and S…

leetcode101.对称二叉树树(递归练习题)

文章目录一、 题目描述二、 核心思路&#xff1a;判断左右子树是否互为镜像三、 递归的终止条件 (Base Cases)四、 代码实现与深度解析五、 关键点与复杂度分析六、 总结与对比 (LC100 vs LC101)LeetCode 101. 对称二叉树 - 力扣【难度&#xff1a;简单&#xff1b;通过率&…

【国内电子数据取证厂商龙信科技】谁是躲在“向日葵”后的

一、前言大家可能每天都在使用在远控软件&#xff0c;我们在享受远控软件带来的便利同时&#xff0c;犯罪者也在使用远控软件进行违法犯罪活动&#xff0c;以达到隐藏自己的目的。市面上常用的远控软件有“向日葵”、“TeamViewer”。二、案件背景在一次电信诈骗案件支援中&…

SAP-PP-MRPLIST

MRP(物料需求计划)分析功能,主要包含以下要点: 程序通过选择工厂和物料/销售订单范围作为输入条件,支持两种展示方式:ALV表格和树形结构 核心功能包括: 物料主数据查询(MAKT/MARA表) 销售订单数据查询(VBAP表) BOM展开(CS_BOM_EXPL_MAT_V2函数) MRP数据获取(MA…

MIT线性代数01_方程组的几何解释

Linear Algebra Lecture #1 W. Gilbert Strangn linear equations, n unknowns row picturecol pictureMatrix form {2x−y0−x2y3 \left\{\begin{matrix} 2x - y 0 \\ -x 2y 3 \end{matrix}\right. {2x−y0−x2y3​ 1 Row Picture2 Column PictureWhat are all combination…

FreeRTOS-中断管理

学习内容中断概念中断是计算机系统中一种重要的事件驱动机制&#xff0c;用于在特定条件下打断正在执行的程序&#xff0c;并跳转到预定义的中断处理程序中执行特定的操作。当发生中断时&#xff0c;处理器会立即中止当前正在执行的指令&#xff0c;保存当前的执行状态&#xf…

图像梯度处理与边缘检测

在图像处理的世界里&#xff0c;我们常常需要从复杂的像素矩阵中提取有意义的信息 —— 比如一张照片中物体的轮廓、医学影像中病灶的边界、自动驾驶视野里的道路边缘。这些 “边界” 或 “轮廓” 在专业术语中被称为 “边缘”&#xff0c;而捕捉边缘的核心技术&#xff0c;离不…

GPU服务器与PC 集群(PC农场):科技算力双子星

在数字经济高速发展的今天&#xff0c;算力已成为驱动科技创新与产业变革的核心引擎。GPU服务器凭借其强大的并行计算能力&#xff0c;在图形渲染、人工智能训练等领域展现出不可替代的优势&#xff1b;而PC集群则通过分布式架构&#xff0c;以高性价比和灵活扩展特性&#xff…

秋招Day19 - 分布式 - 分布式锁

单体时代&#xff0c;可以直接用本地锁来实现对竞争资源的加锁&#xff0c;分布式环境下就要用到分布式锁了有哪些分布式锁的实现方案&#xff1f;MySQL分布式锁、Zookeeper分布式锁、Redis分布式锁MySQL分布式锁如何实现&#xff1f;创建一张锁表&#xff0c;对字段定义唯一性…

AIStarter平台亮点解析:从ComfyUI项目上架到一键运行的完整指南

大家好&#xff01;今天分享一个AIStarter平台的深度体验&#xff0c;带你了解如何通过这个平台轻松上架和运行AI项目&#xff01;视频中&#xff0c;博主在凌晨分享了AIStarter的强大功能&#xff0c;重点展示了ComfyUI 4.0和5.0整合包的上架过程&#xff0c;以及如何简化AI项…

电脑录屏软件推荐:如何使用oCam录制游戏、教程视频

在工作、学习或游戏过程中&#xff0c;我们经常需要录制电脑屏幕&#xff0c;比如制作教程视频、记录游戏操作、分享软件使用过程等。oCam 是一款功能强大且操作简单的屏幕录制工具&#xff0c;支持 Windows 系统&#xff0c;深受用户喜爱。今天简鹿办公就来手把手教你如何使用…

安装cuml报错

安装命令 &#xff08;注意cuda的版本&#xff09; pip install --no-cache-dir --extra-index-urlhttps://pypi.nvidia.com cuml-cu11 报错&#xff1a; 找了很多网上的教程 1.版本问题 没解决 pip install --upgrade pip pip install --upgrade setuptools 2.参考下面博…

【ECharts✨】解决Vue 中 v-show 导致组件 ECharts 样式异常问题

解决Vue 中 v-show 导致组件 ECharts 样式异常问题 问题概述 在使用 Vue 的 v-show 指令实现 <PageOne/>、<PageTwo/>、<PageThree/> 三个视图的定时切换时&#xff0c;<PageTwo/> 显示时出现了异常&#xff0c;具体表现为 ECharts 图表渲染图表尺寸异…

旅游管理虚拟仿真实训室:重构实践教学新生态

在旅游产业数字化转型与教育信息化深度融合的背景下&#xff0c;旅游管理虚拟仿真实训室成为连接理论教学与行业实践的关键纽带。它通过沉浸式技术还原旅游场景&#xff0c;解决传统实训中资源受限、风险较高、时空局限等问题&#xff0c;为旅游管理专业人才培养提供全新路径。…