26届算法秋招_baidu笔试_算法编程题。

    1. 给定2个字符串str1、str2,计算把str1转变为str2的最小操作数。

    可执行的操作有:

    • 插入一个字符
    • 修改一个字符
    • 删除一个字符

    解题:这是一个经典的编辑距离问题,通常使用动态规划解决。

    • 定义dp[i][j]表示将str1的前i个字符转换为str2的前j个字符所需的最小操作数。
    • 初始化:dp[0][j]=j:将空字符变成str2的前j个字符,需要进行j次插入操作;dp[i][0]=i:将str1前i个字符变成空字符需要i次删除操作。
    • 状态转移方程:考虑dp[i][j]即str1[0:i]到str2[0:j]的编辑距离。

    如果str1[i-1] == str2[j-1](因为字符串下标从0开始),则最后一个字符相同,不需要操作:

    dp[i][j]=dp[i-1][j-1]

    如果不同,可以执行三种操作之一,并取最小值:

    1)替换:将str1[i-1]替换为str2[j-1],操作数=1+dp[i-1][j-1]

    2)删除:删除str1[i-1],操作数=1+dp[i-1][j]

    3)插入:在str1的i位置插入str2[j-1],操作数=1+dp[i][j-1]

    def min_edit_distance(str1,str2):m, n = len(tsr1), len(str2)#创建DP表(m+1)*(n+1)dp = [[0] * (n+1) for _ in range(m+1)]#初始化边界条件for i in range(m+1):dp[i][0] = ifor j in range(n+1):dp[0][j] = j#填充dp表for i in range(1,m+1):for j in range(i,n+1):if str1[i-1] == str2[j-1]:dp[i][j] = dp[i-1][j-1]else:dp[i][j] = 1 + min(dp[i][j-1], dp[i-1][j], dp[i-1][j-1])return dp[m][n]
    

    2. 给定两个列表first_i = [start_i, end_i],second_j = [start_j, end_j]表示区间,找到两个区间列表间的交集。

    注意:两个区间列表都是有序的,并且每个列表内的区间可能互相重叠也可能不重叠。

    思路:

    1)由于两个列表都是有序的,可以使用两个指针分别遍历两个列表。

    2)对于两个区间A = [startA, endA]和B= [startB, endB],它们的交集区间为[max(startA, startB), min(endA, endB)],前提是max (startA, startB) < min(endA, endB)。

    3)然后移动指针,移动结束位置较早的那个区间的指针,因为结束早的区间不可能再和另一个列表中的后续区间有交集。

    def interval_intersection(first,second):if not first or not second:return []i, j = 0, 0    #双指针分别指向两个列表的当前位置result = []while i < len(first) and j < len(second):#获取当前比较多两个区间a_start, a_end = first[i]b_start, b_ens = second[j]#计算可能交集的起始点和结束点start_max = max(a_start,b_start)end_min = min(a_end, b_end)#如果有交集if start_max <= end_min:result.append([start_max, end_min])#移动结束点较小的指针if a_end < b_end:i += 1else:j += 1return result
    

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

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

      相关文章

      uniapp-vue3来实现一个金额千分位展示效果

      前言&#xff1a;uniapp-vue3来实现一个金额千分位展示效果实现效果&#xff1a;实现目标&#xff1a;1、封装组件&#xff0c;组件内部要实现&#xff0c;input输入金额后&#xff0c;聚焦离开后&#xff0c;金额以千分位效果展示&#xff0c;聚焦后展示大写金额的弹框随时写的…

      途游Android面试题及参考答案

      对 Java 面向对象的理解是什么?多态的实现方法有哪些? Java 面向对象是一种编程思想,核心在于将现实世界中的事物抽象为 “对象”,每个对象由 “属性”(数据)和 “方法”(行为)组成,通过对象之间的交互完成功能。其核心特性包括封装、继承和多态: 封装是指将对象的属…

      通过filezilla在局域网下实现高速传输数据

      一. filezilla安装 1.1 linux安装 sudo apt update sudo apt install openssh-server1.2 windows安装 windows安装可以参考这篇文章 二. 使用方法 2.1 wifi下使用方法 直接查看想要连接的电脑的ip&#xff0c;其他的按照有线网络设置好了ip之后进行连接就行。 2.2 有线网…

      python的易物小店交换系统

      前端开发框架:vue.js 数据库 mysql 版本不限 后端语言框架支持&#xff1a; 1 java(SSM/springboot)-idea/eclipse 2.NodejsVue.js -vscode 3.python(flask/django)–pycharm/vscode 4.php(thinkphp/laravel)-hbuilderx 数据库工具&#xff1a;Navicat/SQLyog等都可以 在需求分…

      [硬件电路-119]:模拟电路 - 信号处理电路 - 比较器,模拟电路中的“决策者”,模拟信号到数字电平逻辑信号的转化者...

      前言&#xff1a;比较器的价值1、为何称比较器为“决策者”&#xff1f;逻辑判断的物理实现比较器通过硬件电路直接完成“大于/小于”的二元判断&#xff0c;无需软件干预。例如&#xff1a;在过压保护电路中&#xff0c;比较器实时监测输入电压 Vin​ 与参考电压 Vref​&#…

      【从零开始学习Redis】初识Redis

      初识Redis 一句话理解Redis&#xff1a; Redis是一个基于内存的、支持多种数据结构的高性能键值数据库&#xff0c;常被用于缓存、分布式锁和消息队列。和 MySQL 的区别&#xff1a;特点RedisMySQL类型非关系型&#xff08;NoSQL&#xff09;关系型&#xff08;SQL&#xff09;…

      CUDA杂记--nvcc使用介绍

      nvcc 是 NVIDIA CUDA 生态的核心编译器&#xff0c;负责将 CUDA C/C 代码&#xff08;混合了主机代码和设备代码&#xff09;编译为可在 CPU 和 GPU 上运行的二进制文件。它不仅是一个简单的编译器&#xff0c;更是一个“编译驱动程序”&#xff0c;协调多个工具链&#xff08;…

      Codeforces Round 1040 (Div. 2)(补题)

      文章目录前言A.Submission is All You NeedB. PathlessC.Double PerspectiveD.Stay or Mirror前言 又被卡在第二题了&#xff0c;当时脑子跟犯糊涂似的&#xff0c;B题越理越乱&#xff0c;导致比赛结束&#xff0c;还在想着题&#xff0c;彻夜难眠&#xff01; A.Submission …

      Apifox 7 月更新|通过 AI 命名参数及检测接口规范、在线文档支持自定义 CSS 和 JavaScript、鉴权能力升级

      Apifox 新版本上线啦&#xff01; 看看本次版本更新主要涵盖的重点内容&#xff0c;有没有你所关注的功能特性&#xff1a; AI 助力接口设计 通过 AI 为参数命名 支持让 AI 对接口进行规范性检测 在线文档功能增强 在线文档支持自定义 CSS 和 JavaScript 目录支持设置展示…

      Node.js以及异步编程

      什么是服务器&#xff1f;我们知道客户端通过访问服务器&#xff0c;然后服务器去操作数据库把我们想要的数据拿过来给客户端。比如服务器就是餐厅的服务员&#xff0c;数据库就是厨房&#xff0c;客户端就是我们的顾客。首先我们点菜&#xff0c;服务器告诉厨师做饭&#xff0…

      UniApp 实现顶部固定导航栏 Tab 及滚动变色效果

      顶部导航栏是一个非常常见的组件&#xff0c;尤其是固定在顶部的 Tab 导航&#xff0c;既能方便用户快速切换内容&#xff0c;又能保持页面结构的清晰。本文将详细介绍如何在 UniApp Vue3 TypeScript 项目中实现一个固定在顶部、且能根据滚动状态改变样式的 Tab 导航栏。效果…

      c++泛型编程

      C泛型编程 1. 基本概念 1.1 泛型编程&#xff08;Generic Programming&#xff09; 泛型编程是C中一种重要的编程范式&#xff0c;它通过 参数化类型 来实现代码的通用性和复用性。 1.2 模板&#xff08;Templates&#xff09; 模板 是泛型编程的基础&#xff0c;允许编写与数据…

      Vue.js + Node.js 开发前后台框架

      在 Vue.js + Node.js 开发前后台框架时,推荐采用现代化的技术栈组合和最佳实践。以下是一个高效、可扩展的全栈框架方案: 技术栈推荐 层级 技术选型 说明 前端框架 Vue 3 (Composition API) 最新Vue核心库,推荐使用<script setup>语法 UI组件库 Element Plus / Ant D…

      Vision Transformer (ViT) 详解:当Transformer“看见”世界,计算机视觉的范式革命

      摘要: 长久以来&#xff0c;卷积神经网络&#xff08;CNN&#xff09;凭借其精心设计的归纳偏置&#xff08;inductive biases&#xff09;&#xff0c;无可争议地统治着计算机视觉领域。然而&#xff0c;一篇名为《An Image is Worth 16x16 Words》的论文彻底改变了这一格局&a…

      go goroutine chan 用法

      方法1 代码 package mainimport ("fmt""sync""time" )func main() {allChan : make(chan interface{}, 3)var sendWg, recvWg sync.WaitGroup // 分别同步发送和接收// 发送goroutinesendWg.Add(1)go func() {defer sendWg.Done()for i : 0; i &…

      Web前端文件上传安全与敏感数据安全处理

      一、文件上传安全1. 文件上传时的核心安全检查点文件上传是 Web 应用的高风险功能&#xff0c;需从多维度验证&#xff0c;防止恶意文件上传&#xff08;如木马、病毒&#xff09;或路径攻击&#xff0c;关键检查点包括&#xff1a;MIME 类型验证检查请求头中的 Content-Type&a…

      文法中的间接左递归

      &#x1f31f; 第一步&#xff1a;理解基本概念✅ 什么是文法&#xff08;Grammar&#xff09;&#xff1f;在编程语言或语法分析中&#xff0c;文法 是一组规则&#xff0c;用来描述一种语言的结构。例如&#xff1a;S → A a A → B b B → S c 这表示&#xff1a;S 可以…

      Anthropic:跨越生产效能拐点的AI增长飞轮

      资本竞赛中的战略转折点 人工智能领域的竞争已经从理念之争演变为资本、算力与地缘政治影响力的全面较量。Anthropic传闻中的1700亿美元估值&#xff0c;如果成为现实&#xff0c;将标志着前沿AI发展格局的地震式转变。这不仅仅是构建更智能模型的问题&#xff0c;更是为主导下…

      【Unity3D实例-功能-移动】小兵移动-通过鼠标点击进行

      在Unity的世界里&#xff0c;当你轻点鼠标&#xff0c;角色仿佛被赋予了新的使命&#xff0c;沿着一条无形的轨迹&#xff0c;向着地图上的目标点进发。每一次移动&#xff0c;不仅是简单的位移&#xff0c;更是对未知的探索。这种交互&#xff0c;让玩家与游戏世界紧密相连&am…

      从0到1学PHP(十四):PHP 性能优化:打造高效应用

      目录一、PHP 性能评估与分析1.1 性能指标体系1.2 性能分析工具使用1.3 性能瓶颈定位方法与流程二、代码层面优化技巧2.1 高效的循环与条件判断写法2.2 函数与类的优化设计2.3 内存管理与垃圾回收机制优化三、缓存策略与实现3.1 数据缓存3.2 页面缓存与部分缓存技术3.3 OPcache …