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

算法(数据结构)面试问题准备 二分法/DFS/BFS/快排

一、算法概念题

1. 二分法

  • 总结链接
  • 几种查找情况的模板
  • 另一个好记的总结
  • 总结:搜索元素两端闭,while带等,mid±1,结束返-1
    搜索边界常常左闭右开,while小于,mid看边界开闭,闭±开=,结束if检查左=?然后返回
  • 例1:标准
    • 循环条件:left <= high
    • left = mid + 1, right = mid - 1
    • return mid / -1
  • 例2:找左边界:有序,有重复
    • 循环条件:left < high
    • left = mid +1, right = mid(右边界向左收缩)
    • return nums[left] == target ? left : -1
  • 例3:找右边界:有序,有重复
    • 循环条件:left < high
    • mid = xxx + 1
    • left = mid, right = mid - 1
    • return nums[right] == target ? right : -1
  • 总结:基本上是循环条件,判断条件,边界更新方法的不同组合

2. DFS

  • Leetcode-695. 岛屿的最大面积
  • 代码模板
 def dfs(row, col):if row < 0 or col < 0 or row >= m or col >= n or not grid[row][col]:return 0grid[row][col] = 0return dfs(row-1, col) + \dfs(row+1, col) + \dfs(row, col-1) + \dfs(row, col+1) + 1if not grid:return 0m = len(grid)n = len(grid[0])ans = 0for i in range(m):for j in range(n):if grid[i][j]:ans = max(ans, dfs(i,j))return ans

3. BFS

  • Leetcode-1162. As Far from Land as Possible
  • 代码模板
def maxDistance(grid: List[List[int]]) -> int:# 从1开始出发bfs,记录距离m = len(grid)n = len(grid[0])start = []# 存入所有起点1的位置for i in range(m):for j in range(n):if grid[i][j]:start.append([i,j,0])# 特例if not start or len(start) == m*n:return -1# 四个方向x = [1,0,-1,0]y = [0,1,0,-1]while start:i, j, dis = start.pop(0)for k in range(4):row = i + x[k]col = j + y[k]if row < 0 or col < 0 or row == m or col == n or grid[row][col]:continuestart.append([row,col,dis+1])grid[row][col] = 1 #访问过的位置记录为1return dis #最后一个dis

4. 动态规划

  • 典型题总结

5. 滑动窗口

  • 双指针、快针慢针
  • 典型题:链表、数组、子串

6. 快排

def quick_sort(array, l, r):if l < r:q = partition(array, l, r)quick_sort(array, l, q - 1)quick_sort(array, q + 1, r)def partition(array, l, r):x = array[r]i = l - 1for j in range(l, r):if array[j] <= x:i += 1array[i], array[j] = array[j], array[i]array[i + 1], array[r] = array[r], array[i + 1]return i + 1

各种树

  • Trie树
  • 红黑树

二、算法题

1. topK的3种解法

  • 冒泡
  • 最小堆
  • 快排,分布式

2. 3Sum

3. 反转链表

4.1 判断有向图是否存在环

  • DFS:从一点出发若回到该点则说明存在环(从入度为0的点出发);邻接表储存的时间复杂度为O(V+E)
  • 拓扑排序例题:把所有入度为0的点和其输出的边依次删除,如果最后不剩点了则说明没有环(代码)
    • 拓扑序表示有向无环图

4.2 判断无向图是否存在环

  • Union-Find并查集
    • 初始化所有元素的根为-1,遍历每一条边,修改根节点:合并集合时让两者拥有相同的根,其中一个的根一定是-1
    • 如果出现相同的根,则说明有环
  • BFS
    • 黑白灰:初始化为白,入队为灰,出队为黑
    • 如果子结点的颜色有不是白色的,说明有环(在此之前已经访问过一次了)

5. 最近一个小时内访问频率最高的10个IP

  • 每秒对应一个HashMap,IP地址为key,出现次数作为value
  • 同时建立一个固定大小为10的小根堆,用于存放当前出现次数最大的10个IP
  • 每次来一个请求,就把该秒对应的HashMap里对应的IP计数器增1,并查询该IP是否已经在堆中存在
    • 如果不存在,则把该IP在3600个HashMap的计数器加起来,与堆顶IP的出现次数进行比较
    • 如果已经存在,则把堆中该IP的计数器也增1,并调整堆
  • 每过一秒,把最旧的那个HashMap销毁,并为当前这一秒新建一个HashMap,这样维持一个一小时的窗口
  • 每次查询top 10的IP地址时,把堆里10个IP地址返回来即可

三、编程语言概念题

1. python中is和==的区别

  • is是用来判断两个变量引用的对象是否为同一个
  • ==用于判断引用对象的值是否相等
  • (可以通过id()函数查看引用对象的地址)

python生成器

四、大数据Spark/MapReduce

1. Spark性能如何调优

  • 避免创建重复的RDD
  • 尽量复用同一RDD
  • 尽量避免使用shuffle类算子
  • 优化数据结构
  • 使用Hive ETL预处理数据
  • 过滤少数导致倾斜的key
  • 提高shuffle操作的并行度
  • 两阶段聚合
  • 将reduce join转为map join

相关文章:

算法(数据结构)面试问题准备 二分法/DFS/BFS/快排

一、算法概念题 1. 二分法 总结链接几种查找情况的模板另一个好记的总结总结&#xff1a;搜索元素两端闭&#xff0c;while带等&#xff0c;mid1&#xff0c;结束返-1 搜索边界常常左闭右开&#xff0c;while小于&#xff0c;mid看边界开闭&#xff0c;闭开&#xff0c;结束i…...

Unity3d C#实现文件(json、txt、xml等)加密、解密和加载(信息脱敏)功能实现(含源码工程)

前言 在Unity3d工程中经常有需要将一些文件放到本地项目中&#xff0c;诸如json、txt、csv和xml等文件需要放到StreamingAssets和Resources文件夹目录下&#xff0c;在程序发布后这些文件基本是对用户可见的状态&#xff0c;造成信息泄露&#xff0c;甚至有不法分子会利用这些…...

解释一下分库分表的概念和优缺点。如何设计一个高性能的数据库架构?

解释一下分库分表的概念和优缺点。 分库分表是数据库架构优化的常见手段&#xff0c;主要用于解决单一数据库或表在数据量增大、访问频率提高时面临的性能瓶颈和扩展性问题。 概念&#xff1a; 分库&#xff08;Sharding-Database&#xff09;&#xff1a; 将原本存储在一个…...

功能强大使用简单的截图/贴图工具,PixPin

一、下载链接 PixPin 截图/贴图/长截图/文字识别/标注 | PixPin 截图/贴图/长截图/文字识别/标注 (pixpinapp.com) 二、功能 截图/贴图/长截图/文字识别/标注 三、安装教程 根据提示安装即可&#xff1a; 四、快捷键 1.软件自带快捷键&#xff08;右击PixPin查看 &#xff09…...

机器学习周报第32周

目录 摘要Abstract一、文献阅读1.论文标题2.论文摘要3.论文背景4.论文方案4.1 多视角自注意力网络4.2 距离感知4.3 方向信息4.4 短语模式 二、self-attention 摘要 本周学习了多视角自注意力网络&#xff0c;在统一的框架下联合学习输入句子的不同语言学方面。具体来说&#x…...

人工智能|机器学习——DBSCAN聚类算法(密度聚类)

1.算法简介 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法&#xff0c;簇集的划定完全由样本的聚集程度决定。聚集程度不足以构成簇落的那些样本视为噪声点&#xff0c;因此DBSCAN聚类的方式也可以用于异常点的检测。 2.算法原…...

Excel F4键的作用

目录 一. 单元格相对/绝对引用转换二. 重复上一步操作 一. 单元格相对/绝对引用转换 ⏹ 使用F4键 如下图所示&#xff0c;B1单元格引用了A1单元格的内容。此时是使用相对引用&#xff0c;可以按下键盘上的F4键进行相对引用和绝对引用的转换。 二. 重复上一步操作 ⏹添加或删除…...

前端实现跨域的六种解决方法

本专栏是汇集了一些HTML常常被遗忘的知识&#xff0c;这里算是温故而知新&#xff0c;往往这些零碎的知识点&#xff0c;在你开发中能起到炸惊效果。我们每个人都没有过目不忘&#xff0c;过久不忘的本事&#xff0c;就让这一点点知识慢慢渗透你的脑海。 本专栏的风格是力求简洁…...

macOS上实现「灵动岛」效果

自从Apple iPhone推出了「灵动岛」功能后&#xff0c;用户们就被其优雅的设计和强大的功能所吸引。然而&#xff0c;作为macOS用户&#xff0c;我们一直在等待这一功能能够在我们的设备上实现。现在&#xff0c;随着新的应用程序的推出&#xff0c;我们终于可以在我们的Mac上体…...

幕译--本地字幕生成与翻译--Whisper客户端

幕译–本地字幕生成与翻译 本地离线的字幕生成与翻译&#xff0c;支持GPU加速。可免费试用&#xff0c;无次数限制 基于Whisper&#xff0c;希望做最好的Whisper客户端 功能介绍 本地离线&#xff0c;不用担心隐私问题支持GPU加速支持多种模型支持&#xff08;中文、英语、日…...

链表基础知识详解

链表基础知识详解 一、链表是什么&#xff1f;1.链表的定义2.链表的组成3.链表的优缺点4.链表的特点 二、链表的基本操作1.链表的建立2.链表的删除3.链表的查找4.链表函数 一、链表是什么&#xff1f; 1.链表的定义 链表是一种物理存储单元上非连续、非顺序的存储结构&#xf…...

GPT-prompt大全

ChatGPT目前最强大的的工具是ChatGPT Plus&#xff0c;不仅训练数据更新到了2023年&#xff0c;而且还可以优先访问新功能。对于程序员来说&#xff0c;升级到ChatGPT Plus&#xff0c;将会带来更多的便利和效率提升。 根据 升级ChatGPT Plus保姆级教程&#xff0c;1分钟就可以…...

的发射点2

☞ 通用计算机启动过程 1️⃣一个基础固件&#xff1a;BIOS 一个基础固件&#xff1a;BIOS→基本IO系统&#xff0c;它提供以下功能&#xff1a; 上电后自检功能 Power-On Self-Test&#xff0c;即POST&#xff1a;上电后&#xff0c;识别硬件配置并对其进行自检&#xff0c…...

深入揭秘Lucene:全面解析其原理与应用场景(一)

本系列文章简介&#xff1a; 本系列文章将深入揭秘Lucene&#xff0c;全面解析其原理与应用场景。我们将从Lucene的基本概念和核心组件开始&#xff0c;逐步介绍Lucene的索引原理、搜索算法以及性能优化策略。通过阅读本文&#xff0c;读者将会对Lucene的工作原理有更深入的了解…...

拿捏算法的复杂度

目录 前言 一&#xff1a;算法的时间复杂度 1.定义 2.简单的算法可以数循环的次数&#xff0c;其余需要经过计算得出表达式 3.记法&#xff1a;大O的渐近表示法 表示规则&#xff1a;对得出的时间复杂度的函数表达式&#xff0c;只关注最高阶&#xff0c;其余项和最高阶…...

C语言实战—猜数字游戏(涉及循环和少部分函数内容)

对于前面一些内容的总结 不妨跟着一起试试吧 折半查找算法&#xff08;二分查找&#xff09; 比如我买了一双鞋&#xff0c;你好奇问我多少钱&#xff0c;我说不超过300元。你还是好奇&#xff0c;你想知道到底多少&#xff0c;我就让 你猜&#xff0c;你会怎么猜&#xff1f;…...

#define MODIFY_REG(REG, CLEARMASK, SETMASK)

#define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK))) 这个宏 MODIFY_REG 是在嵌入式编程中&#xff0c;它用于修改一个寄存器的特定位&#xff0c;而不影响其他位。这个宏接受三个参数&#xff…...

使用 Docker 部署 Stirling-PDF 多功能 PDF 工具

1&#xff09;Stirling-PDF 介绍 大家应该都有过这样的经历&#xff0c;面对一堆 PDF 文档&#xff0c;或者需要合并几个 PDF&#xff0c;或者需要将一份 PDF 文件拆分&#xff0c;又或者需要调整 PDF 中的页面顺序&#xff0c;找到的线上工具 要么广告满天飞&#xff0c;要么 …...

springcloud第3季 项目工程搭建与需求说明1

一 需求说明 1.1 实现结构图 订单接口调用支付接口 二 工程搭建 2.1 搭建工程步骤...

外包干了3个月,技术退步明显。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;2019年我通过校招踏入了南京一家软件公司&#xff0c;开始了我的职业生涯。那时的我&#xff0c;满怀热血和憧憬&#xff0c;期待着在这个行业中闯出一片天地。然而&#xff0c;随着时间的推移&#xff0c;我发现自己逐渐陷入…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...