算法练习3
今日共练习4 道题主题覆盖二分查找与二叉树遍历。1. 二分查找题目在严格升序且无重复的数组中查找target存在则返回下标否则返回-1。核心思想每轮通过中点mid排除一半区间。public int search(int[] nums, int target) { int left 0; int right nums.length - 1; while (left right) { int mid left (right - left) / 2; if (nums[mid] target) { right mid - 1; } else if (nums[mid] target) { left mid 1; } else { return mid; } } return -1; }重点nums[mid] target目标只可能在左半区间。 nums[mid] target目标只可能在右半区间。 nums[mid] target直接返回 mid。复杂度时间复杂度O(log n) 空间复杂度O(1)二分查找的核心不变量只要 target 存在它一定在当前闭区间 [left, right] 中。2. 搜索插入位置题目在严格升序数组中查找target存在则返回下标不存在则返回应插入的位置。示例nums [1, 3, 5, 6] target 5 - 2 target 2 - 1 target 7 - 4 target 0 - 0核心代码与普通二分几乎相同区别只在于循环结束后的返回值public int searchInsert(int[] nums, int target) { int left 0; int right nums.length - 1; while (left right) { int mid left (right - left) / 2; if (nums[mid] target) { return mid; } else if (nums[mid] target) { left mid 1; } else { right mid - 1; } } return left; }为什么返回left循环结束时 left right 1。 right 指向最后一个小于 target 的位置 left 指向第一个大于 target 的位置。 将 target 插入 left 位置数组仍能保持升序。复杂度时间复杂度O(log n) 空间复杂度O(1)3. 在排序数组中查找第一个和最后一个位置题目在非递减数组中找到target的起始下标和结束下标不存在则返回[-1, -1]。示例nums [5, 7, 7, 8, 8, 10] target 8 结果[3, 4]普通二分在找到target后不能直接返回因为数组中可能包含重复元素。解决方式进行两次边界二分。第一次找第一个 target。 第二次找最后一个 target。完整实现public int[] searchRange(int[] nums, int target) { return new int[]{findFirst(nums, target), findLast(nums, target)}; } private int findFirst(int[] nums, int target) { int left 0; int right nums.length - 1; int answer -1; while (left right) { int mid left (right - left) / 2; if (nums[mid] target) { left mid 1; } else { if (nums[mid] target) { answer mid; } right mid - 1; } } return answer; } private int findLast(int[] nums, int target) { int left 0; int right nums.length - 1; int answer -1; while (left right) { int mid left (right - left) / 2; if (nums[mid] target) { right mid - 1; } else { if (nums[mid] target) { answer mid; } left mid 1; } } return answer; }关键规律找第一个 target 命中 target 后记录 mid继续向左找。 找最后一个 target 命中 target 后记录 mid继续向右找。复杂度时间复杂度O(log n) 空间复杂度O(1)4. 二叉树的中序遍历题目返回二叉树的中序遍历结果。中序遍历顺序左子树 - 当前节点 - 右子树节点定义static class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int val) { this.val val; } }递归实现public ListInteger inorderTraversal(TreeNode root) { ListInteger result new ArrayList(); traverse(root, result); return result; } private void traverse(TreeNode node, ListInteger result) { if (node null) { return; } traverse(node.left, result); result.add(node.val); traverse(node.right, result); }递归终止条件if (node null) { return; }三种基础遍历顺序前序遍历根 - 左 - 右 中序遍历左 - 根 - 右 后序遍历左 - 右 - 根复杂度时间复杂度O(n) 空间复杂度O(n)其中空间主要包括结果列表和递归调用栈。

相关新闻

UE4性能优化实战:7个技巧提升帧率与打包效率

UE4性能优化实战:7个技巧提升帧率与打包效率

1. 项目概述:为什么UE4性能优化是每个开发者的必修课? 在UE4项目开发的中后期,尤其是当场景复杂度飙升、蓝图逻辑变得盘根错节时,性能问题总会像幽灵一样准时出现。你可能会发现,在编辑器里跑得好好的场景,…

2026/7/30 8:45:12阅读更多 →
2026年四大系列减速机选型趋势与实战指南

2026年四大系列减速机选型趋势与实战指南

在工业传动领域,“四大系列减速机”指的是R系列斜齿轮减速机、F系列平行轴斜齿轮减速机、K系列伞齿轮-斜齿轮减速机和S系列斜齿轮-蜗轮蜗杆减速机。这套由模块化设计思想构建的传动产品体系,凭借高标准化、高互换性和高可靠性的优势,已成为自…

2026/7/30 8:45:12阅读更多 →
阿里云号码认证服务:一键登录原理、集成与优化实践

阿里云号码认证服务:一键登录原理、集成与优化实践

1. 项目概述:为什么我们需要号码认证服务?在移动互联网应用开发中,用户注册和登录是第一个,也是最关键的用户触点。传统的短信验证码方案,虽然普及,但体验上的痛点也日益明显:用户需要等待短信、…

2026/7/30 8:45:12阅读更多 →
如何快速完成输入法词库转换:跨平台词库迁移终极指南

如何快速完成输入法词库转换:跨平台词库迁移终极指南

如何快速完成输入法词库转换:跨平台词库迁移终极指南 【免费下载链接】imewlconverter ”深蓝词库转换“ 一款开源免费的输入法词库转换程序 项目地址: https://gitcode.com/gh_mirrors/im/imewlconverter 你是否曾为更换设备时输入法词库无法迁移而烦恼&…

2026/7/30 10:03:37阅读更多 →
智慧化工安全生产落地:国标GB28181视频平台EasyGBS以AI可视化管控生产核心要素!

智慧化工安全生产落地:国标GB28181视频平台EasyGBS以AI可视化管控生产核心要素!

化工行业有句老话:"安全不是一切,但没有安全一切都没有。"在危化品生产、储存、运输的每一个环节,视觉监管都是最后一道防线,也是最容易被疲劳和疏忽突破的一道防线。一、化工安全管理的"五道关",…

2026/7/30 10:03:37阅读更多 →
软件功能点估算

软件功能点估算

访问地址d登录 - 功能点预算计算http://47.120.10.247:8092/ 现在软件预算 和报价基本透明,本系统按照功能点进行核算,注册后等管理员授权后方可使用。 以国标 GB/T 36964-2018 为基准,采用 NESMA/IFPUG 功能点法计量规模,结合本…

2026/7/30 10:03:37阅读更多 →
大模型实战:DeepSeek-V3.2与Qwen3.5全流程开发指南

大模型实战:DeepSeek-V3.2与Qwen3.5全流程开发指南

1. 项目概述作为一名长期从事大模型研发的算法工程师,我想分享最近在DeepSeek-V3.2和Qwen3.5两个主流大模型上的实战经验。这两个模型在中文理解和生成任务上表现出色,但在实际应用中,从训练到部署的每个环节都存在大量技术细节需要关注。本文…

2026/7/30 10:03:37阅读更多 →
Java List集合与泛型实战指南

Java List集合与泛型实战指南

1. 为什么需要List集合与泛型 在Java开发中,我们经常需要处理一组对象。想象你正在开发一个学生管理系统,需要存储全班50名学生的信息。如果用基本数组来实现,会遇到几个头疼的问题: 数组长度固定,无法动态扩容 删除…

2026/7/30 10:03:37阅读更多 →
AIGC内容优化平台:专业场景下的智能降噪与风格迁移

AIGC内容优化平台:专业场景下的智能降噪与风格迁移

1. 项目背景与核心价值 2026年将是AIGC技术全面普及的关键节点,这个名为"千笔专业降AIGC智能体"的平台瞄准了一个精准痛点:在AIGC内容泛滥的当下,如何快速识别和优化AI生成内容,使其更符合专业场景需求。不同于市面上常…

2026/7/30 10:01:37阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/29 9:47:45阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/29 7:00:19阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/29 7:58:51阅读更多 →
3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 🚀 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 你是否曾经因为iOS系统的严格…

2026/7/30 0:00:58阅读更多 →
[GESP202606 四级] 扫雷

[GESP202606 四级] 扫雷

B4557 [GESP202606 四级] 扫雷 https://www.luogu.com.cn/problem/B4557 中国计算机学会(CCF)2026年6月C四级讲解——扫雷 https://www.bilibili.com/video/BV1MCMg6AEXR/ B4557 [GESP202606 四级] 扫雷 https://www.bilibili.com/video/BV1ZKTj6ZEVh/ 2…

2026/7/30 0:00:58阅读更多 →
Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:58阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/30 0:27:26阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/30 4:47:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/29 14:26:42阅读更多 →