刷题笔记:力扣第704、977、209题(数组相关)
力扣第704题-二分查找1.练手题简单的二分排序完整代码如下1. int search(int* nums, int numsSize, int target) { 2. // 左边界l初始为数组起点下标0右边界r初始为数组最后一个元素下标 3. int l 0, r numsSize - 1; 4. // 左边界右边界时区间内还有元素持续二分查找 5. while (l r){ 6. // 计算中间下标 7. int mid (l r) / 2; 8. // 中间值小于目标值目标在右半区间更新左边界 9. if (nums[mid] target){ 10. l mid 1; 11. } else if (nums[mid] target){ 12. // 中间值大于目标值目标在左半区间更新右边界 13. r mid - 1; 14. } else { 15. // 找到目标值返回对应下标 16. return mid; 17. } 18. } 19. 20. // 循环结束未找到目标返回-1 21. return -1; 22. }时间复杂度O(logn)空间复杂度O(1)标准写法。力扣第977题-有序数组的平方1.直接算出平方后暴力排序肯定是不可取的那样的算法时间复杂度为O(nlogn)题目要求时间复杂度为O(n)即遍历一遍数组便能得出答案。2.初步想法为寻找非正数与正数的分界点使用左右两个指针来进行比较和排序完整代码如下1. int* sortedSquares(int* nums, int numsSize, int* returnSize) { 2. // 分配和原数组长度相同的内存存放平方后的结果 3. int* res (int*)malloc(sizeof(int) * numsSize); 4. // cur 标记结果数组当前存放元素的位置 5. int cur 0; 6. // r 右指针寻找第一个非负数下标 7. int r 0; 8. 9. // 右指针向右移动找到第一个不小于0的数字 10. while (r numsSize nums[r] 0){ 11. r; 12. } 13. 14. // l 左指针指向最后一个负数的下标 15. int l r - 1; 16. 17. // 左右指针都未越界比较绝对值大小小的平方先放入结果 18. while (l 0 r numsSize){ 19. // 左边负数绝对值更小先存左边平方 20. if (-nums[l] nums[r]){ 21. res[cur] nums[l] * nums[l]; 22. l--; 23. } else { 24. // 右边数字更小或相等存右边平方 25. res[cur] nums[r] * nums[r]; 26. r; 27. } 28. } 29. 30. // 若左指针还有剩余负数依次放入结果 31. while (l 0){ 32. res[cur] nums[l] * nums[l]; 33. l--; 34. } 35. 36. // 若右指针还有剩余非负数依次放入结果 37. while (r numsSize){ 38. res[cur] nums[r] * nums[r]; 39. r; 40. } 41. 42. // 给外部参数赋值结果数组长度 43. *returnSize cur; 44. return res; 45. }该算法时间复杂度为O(nlogn)满足题目要求。3.答案提供了另外一种思路原数组的平方一定是从两端向中间依次递减所以可以不用排序将左右指针放置于数组两端比较平方后更大的那一个逆序放入结果数组。完整代码如下1. int* sortedSquares(int* nums, int numsSize, int* returnSize) { 2. // 开辟结果数组空间大小与原数组一致 3. int* res (int*)malloc(sizeof(int) * numsSize); 4. // cur 从结果数组末尾开始填充大数放后面 5. int cur numsSize - 1; 6. // l 左指针指向数组最左端负数区r 右指针指向数组最右端正数区 7. int l 0, r numsSize - 1; 8. 9. // 左右指针未相遇时循环 10. while (l r){ 11. // 左侧数字平方更大 12. if (nums[l] * nums[l] nums[r] * nums[r]){ 13. // 将大的平方值放入结果数组尾部游标前移左指针右移 14. res[cur--] nums[l] * nums[l]; 15. l; 16. } else { 17. // 右侧数字平方更大或相等存入尾部游标前移右指针左移 18. res[cur--] nums[r] * nums[r]; 19. r--; 20. } 21. } 22. 23. // 返回数组长度等于原数组长度 24. *returnSize numsSize; 25. return res; 26. }该算法时间复杂度为O(nlogn)满足题目要求。力扣第209题-长度最小的子数组1.这道题肯定是使用滑动窗口初步写出的代码如下1. int minSubArrayLen(int target, int* nums, int numsSize) { 2. int l 0, r 0; 3. int tmp 0; 4. int res 100001; 5. 6. while (r numsSize l r){ 7. int cnt r - l; 8. if (tmp target){ 9. tmp nums[r]; 10. } else { 11. res fmin(res, cnt); 12. tmp - nums[l]; 13. } 14. } 15. 16. return res 100001 ? 0 : res; 17. }2.初步写的代码连本地算例都没通过询问ai后得知滑动窗口的处理逻辑有些问题。正确的滑动窗口处理方式应该是右指针一直无条件向前左指针根据条件向前回退吐出元素。这种错误在力扣第3题犯过属于时间久了忘记该知识点了正好通过本题来回忆一下。3.基于以上思想写出的完整代码如下1. int minSubArrayLen(int target, int* nums, int numsSize) { 2. // 记录满足条件的最小子数组长度初始值设为大于数组最大可能长度的数 3. int res 100001; 4. // 滑动窗口内元素累加和 5. int tmp 0; 6. 7. // 滑动窗口l窗口左边界r窗口右边界右边界不断向右扩张 8. for (int l 0, r 0; r numsSize; r){ 9. // 将当前右边界数值加入窗口和 10. tmp nums[r]; 11. // 窗口和大于等于目标值时尝试收缩左边界寻找更短合法子数组 12. while (tmp target){ 13. // 计算当前窗口长度 14. int cnt r - l 1; 15. // 更新最小长度 16. res fmin(res, cnt); 17. // 左边界右移窗口缩小减去移出窗口的数值 18. tmp - nums[l]; 19. } 20. } 21. 22. // 如果res未更新说明无满足条件子数组返回0否则返回最小长度 23. return res 100001 ? 0 : res; 24. }时间复杂度为O(n)满足题目要求。

相关新闻

SEO关键词研究:从用户意图到实战优化

SEO关键词研究:从用户意图到实战优化

1. SEO关键词研究的底层逻辑与价值解析做网站优化这些年,我见过太多人把SEO简单理解为"堆砌关键词"。实际上,真正有效的关键词研究更像是在做用户心理测绘。当你在Google搜索框输入文字的那一刻,背后是带着明确意图的——可能是想解…

2026/7/29 10:48:46 阅读更多 →
超级浏览器需要日常维护吗?团队每周应检查什么

超级浏览器需要日常维护吗?团队每周应检查什么

超级浏览器通常集成环境隔离、多开管理、分组标签、团队权限和自动化接口。很多团队重视首次配置,却忽略内核更新、停用环境、成员权限和备份状态会持续变化。建立轻量的每周维护清单,可以减少环境混乱,也能让异常更早被发现。 为什么超级浏…

2026/7/29 10:48:46 阅读更多 →
单元测试实践指南:从JUnit到Mock技术

单元测试实践指南:从JUnit到Mock技术

1. 单元测试的本质与价值单元测试是软件开发过程中最基础的测试环节,它针对程序模块(软件设计的最小单位)进行正确性检验。不同于集成测试或系统测试,单元测试的粒度更细、执行更快、反馈更及时。我在十多年的开发实践中发现&…

2026/7/29 10:48:46 阅读更多 →

最新新闻

行业深度|GEO进入标准化深水区:万拓营销全链路服务体系重构AI搜索优化价值范式

行业深度|GEO进入标准化深水区:万拓营销全链路服务体系重构AI搜索优化价值范式

2026 年,生成式 AI 搜索的商业化落地加速推进,GEO(生成式引擎优化)正式从概念普及阶段步入规模化应用深水区。据 IDC 公开数据,国内 AI 搜索相关市场规模已突破 180 亿元,珠三角、长三角等产业密集区域的企…

2026/7/29 10:55:49 阅读更多 →
2026年数据库技术雷达:从必选项到观望项的四象限评估

2026年数据库技术雷达:从必选项到观望项的四象限评估

2026年数据库技术雷达:从必选项到观望项的四象限评估 ThoughtWorks的技术雷达是业界评估技术趋势的经典框架。本文用类似的四象限方法,对2026年数据库领域的关键技术进行分类评估,给出一个务实的"投入优先级"建议。 一、技术选型焦…

2026/7/29 10:55:49 阅读更多 →
微软BitNet:1-bit量化大模型CPU部署实战

微软BitNet:1-bit量化大模型CPU部署实战

1. BitNet模型概述:微软的轻量化大模型方案BitNet是微软研究院推出的一种新型神经网络架构,其核心创新在于通过1-bit量化技术大幅降低模型计算复杂度。与传统FP16或FP32精度的模型相比,BitNet将权重和激活值都压缩到1-bit表示,使得…

2026/7/29 10:55:49 阅读更多 →
动漫设计专业模块化素描教学改革实践

动漫设计专业模块化素描教学改革实践

1. 项目背景与核心价值在职业院校动漫设计专业教学中,素描基础课程长期面临一个教学困境:传统写生训练与行业岗位需求脱节。我走访长三角地区7所高职院校时发现,超过80%的动漫专业学生在毕业设计阶段仍无法将素描技法有效转化为角色设计能力。…

2026/7/29 10:55:49 阅读更多 →
Java面试核心30题解析与实战技巧

Java面试核心30题解析与实战技巧

1. Java高频面试题解析与实战指南作为从业十年的Java技术面试官,我整理了2026年最常被问及的30道核心面试题及其深度解析。这份清单不仅包含标准答案,更会揭示面试官真正想考察的能力维度,帮助你在技术面中展现出超越八股文的实战思维。2. Ja…

2026/7/29 10:55:49 阅读更多 →
DIY透明屏展示箱:从树莓派驱动到3D打印箱体的完整制作指南

DIY透明屏展示箱:从树莓派驱动到3D打印箱体的完整制作指南

1. 项目概述:从“透明屏”到“展示箱体”的完整构想 最近在折腾一个挺有意思的项目,核心是想做一个能展示动态内容的透明屏展示箱。这玩意儿听起来有点赛博朋克,其实拆解开来,就是几个成熟技术的组合应用。简单来说,我…

2026/7/29 10:54:49 阅读更多 →

日新闻

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

一、本文介绍 🔥本文在RT-DETR多模态融合目标检测中引入RLAB残差线性注意力模块,可在不同模态特征交互阶段进行多次残差细化,使可见光、红外等特征在尺度、语义和空间位置上更好对齐;随后将细化特征与解码器输出拼接并生成Q、K、V,通过线性注意力自适应强化关键通道、目…

2026/7/29 0:00:23 阅读更多 →
AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础 在上一期「AI编程系列」中,我们学习了如何构建一个基础的 AI 问答系统,通过简单的输入输出让模型回应问题。但现实世界中的 AI 应用往往需要处理更复杂的场景:…

2026/7/29 0:00:23 阅读更多 →
AI智能体开发实战:从工具调用到企业级部署

AI智能体开发实战:从工具调用到企业级部署

1. 从被动问答到主动执行:AI Agent的范式转变过去两年,大语言模型最显著的应用形态是聊天机器人——用户提问,AI回答。但真正的生产力革命发生在2023年下半年:当AI学会主动调用工具完成任务时,生产力工具的历史被彻底改…

2026/7/29 0:00:23 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻