当前位置: 首页 > news >正文

常见编码面试问题

问题: 编写一个布尔函数,接收一个整数数组和一个目标整数 k,判断数组中是否存在两个不同的元素,其和等于 k。

示例:

输入:array = [4, 5, 1, -3, 6], k = 11

输出:true

解释:5 + 6 = 11

输入:array = [4, 5, 1, -3, 6], k = -2

输出:true

解释:1 + (-3) = -2

输入:array = [4, 5, 1, -3, 6], k = 8

输出:false

解释:不存在两个数的和等于 8

解决方案

方法 1:暴力破解法

思路: 使用双重循环遍历数组中的每一对元素,检查它们的和是否等于目标值 k。

外层循环选择第一个数 arr[i]

内层循环遍历剩余的数 arr[j](j > i),检查 arr[i] + arr[j] == k

时间复杂度: O(n²)(适用于小规模数组)

空间复杂度: O(1)

适用场景: 代码简单,易于理解 适用于数据量较小的情况

方法 2:优化方法(使用哈希集合)

思路: 利用哈希集合存储已遍历的元素,对于当前元素 num,检查集合中是否存在 k - num:

初始化一个空集合 seen

遍历数组中的每个元素 num:

计算补数 complement = k - num

如果 complement 存在于 seen 中,说明找到符合条件的数对,返回 true

否则,将 num 加入 seen

遍历结束后仍未找到,则返回 false

时间复杂度: O(n)(只需一次遍历)

空间复杂度: O(n)(需要额外存储集合)

优势:

高效,适用于大规模数据 避免不必要的重复计算

相关文章:

  • 命令模式 (Command Pattern)
  • 问题记录(四)——拦截器“失效”?null 还是“null“?
  • 【iOS】OC高级编程 iOS多线程与内存管理阅读笔记——自动引用计数(一)
  • C++ 核心进阶
  • 探秘串口服务器厂家:背后的故事与应用
  • 深入理解Java缓冲输入输出流:性能优化的核心武器
  • 03(总)-docker篇 Dockerfile镜像制作(jdk,jar)与jar包制作成docker容器方式
  • 区块链如何为农业供应链赋能?用 Python 打造透明高效的农产品流通体系
  • Spring Boot 项目的启动流程,图片+文字详细解答(附相关面试题)
  • 进程与线程
  • 如何让Windows开机时自动运行LabVIEW程序
  • 驱动开发硬核特训 · Day 13:从 device_create 到 sysfs,设备文件是如何生成的?
  • OpenCV 图形API(38)图像滤波-----Sobel 算子操作函数Sobel()
  • OpenCv高阶(五)——SIFT特征提取
  • git的上传流程
  • C 语言中的 volatile 关键字
  • 线束线缆从二维设计到虚拟验证全流程解决方案
  • 5、Props:组件间的密语——React 19 数据传递全解
  • 从入门到精通:Helm Charts 创建初学者指南
  • vue3的teleport和suspense是什么
  • 报告格式范文/推广seo网站
  • 网站百度搜不到了/免费seo在线优化
  • 做电商的网站/二级域名注册
  • 适合企业员工培训的课程/深圳市企业网站seo营销工具
  • 海淀石家庄网站建设/免费软文推广平台
  • wordpress三合一主题/怎么优化自己公司的网站