算法题1:字符序列交换(阿里巴巴笔试题)

2023-05-16

题目:

若初始序列为gbfcdae,那么至少需要多少次两两交换,才能使该序列变为abcdefg ?任给一个自由a--g这7个字母组成的排列,最坏的情况下需要至少多少次两两交换,才能使序列变为abcdefg ?


分析一:字母交换问题

字母可以任意交换,最坏情况是每个字符都需要交换一次来达到最终位置,
最后一次交换使的两个字符同时到达最终位置。N个字符最坏情况需要至少N-1次交换,
gbfcdae中b已经在自己的位置上又少了一次,所以5次。

分析二:图论的拓扑排序

拓扑排序定义:简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。

在AOV网中,若不存在回路,则所有活动可排列成一个线性序列,使得每个活动的所有前驱活动都排在该活动的前面,我们把此序列叫做拓  扑序列(Topological order)。

由AOV网构造拓扑序列的过程叫做拓扑排序(Topological sort)。

有向无环图(Directed Acyclic Graph, DAG)是有向图的一种,字面意思的理解就是图中没有环。常常被用来表示事件之间的驱动依赖关系,管理任务之间的调度。
拓扑排序是对DAG的顶点进行排序,使得对每一条有向边(u, v),均有u(在排序记录中)比v先出现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

算法题1:字符序列交换(阿里巴巴笔试题) 的相关文章

随机推荐

  • Anaconda 环境environment的移植到新机器(无需网络,简单)

    Anaconda 环境的移植到新机器 xff08 无需网络 xff0c 简单 xff09 在项目开发的移植过程中 xff0c 经常需要重新搭建Anaconda环境 xff0c 避开繁琐的搭建过程 xff0c 将环境移植到 新的环境能打打加快
  • STM32F103学习(ADC)

    1 定义 ADC Analog to Digital Converter 模数转换器 是指将连续变化的模拟信号转换为离散的数字信号的器件 2 原理 stm32上的ADC外设采用逐次比较的方式 逐次比较型ADC工作原理可以类比天平称物体 比如
  • Debian10.x 64位安装 go 1.19环境

    1 wget https dl google com go go1 19 6 linux amd64 tar gz 2 tar C usr local zxvf go1 19 6 linux amd64 tar gz 3 vim etc p
  • 软件工程基础 - 九种开发模型

    瀑布模型 xff08 Waterfall Model xff09 xff1a 瀑布模型的示意图 瀑布模型适合应用的项目类型 xff1a 需求明确 或者 二次开发 瀑布模型是结构化方法中的模型 xff0c 一般应用于结构化的开发 原型模型 x
  • 用js控制输入框input数字、汉字、字符与正则表达式

    案例 xff1a span class token comment 验证是否为数字 包含小数点个数 不能 xff10 开头 span span class token keyword function span span class tok
  • centos6.5安装xrdp

    近来工作比较无聊 xff0c 折腾了个CentOS6 5玩玩 XRDP的功能是在windows系统中使用mstsc远程桌面连接Linux进行操作 由于上次折腾忘记了XRDP的配置步骤 xff0c 特此记录一下 1 安装源 rpm ivh h
  • Ubuntu20.04安装anaconda

    1 下载anaconda 官网链接 xff1a Anaconda Anaconda Distribution 直接选择Download xff0c 他会自动识别系统下载最新的版本 2 安装anaconda 进入下载文件夹 xff0c 运行安
  • 终于有人把SDH、MSTP、OTN和PTN的关系解释清楚了

    在开始之前 xff0c 先要解释一下TDM的概念 TDM xff0c 就是时分复用 xff0c 就是将一个标准时长 xff08 1秒 xff09 分成若干段小的时间段 xff08 8000 xff09 xff0c 每一个小时间段 xff08
  • 使用Visual Studio 2022运行C++代码

    使用Visual Studio 2022运行C 43 43 代码 1 打开VS 2022 xff0c 创建新项目 2 安装多个工具和功能 3 选中 使用C 43 43 的桌面开发 和 通用Windows平台开发 xff0c 点击修改 xff
  • Windows远程麒麟桌面操作系统、相互远程桌面的设置方法(一)

    前言 VNC Virtual Network Computing 是进行远程桌面控制的一个软件 客户端的键 盘输入和鼠标操作通过网络传输到远程服务器 xff0c 控制服务器的操作 服务器的图形 界面通过网络传输到客户端显示给用户 就像直接在
  • shell 中bad substitution错误

    今天在学习linux写shell脚本的时候 xff0c 碰到了一个bad substitution错误 脚本的内容是输入一个文件名 xff0c 创建出三个文件名 43 日期 xff08 今天 xff0c 昨天 xff0c 前天 xff09
  • 关于自增自减的理解

    自增运算符 43 43 xff1a 自增运算符 xff0c 也是一元运算符 作用 xff1a 与变量配合使用 xff0c 使得变量加一或减一 前置自增 xff1a 自增运算符在变量的前面 后置自增 自增运算符在变量的后面 前置自增和后置自增
  • CentOS安装NodeJS

    CentOS安装NodeJS 在CentOS下安装NodeJS有以下几种方法 使用的CentOS版本为7 2 CentOS其他版本的NodeJS安装大同小异 xff0c 也可以参看本文的方法 安装方法1 直接部署 1 首先安装wget yu
  • 无法打开“windows.h”文件、无法打开“kernel32.lib”文件解决方法

    无法打开 windows h 文件的解决做法 xff1a 在VS2008下的option VC 43 43 目录 添加包含文件路径中 xff0c 添加windows SDK目录 xff0c 例如这个 xff0c C Program File
  • ubuntu 搜索安装包的命令

    1 sudo apt cache search XXX
  • ubuntu让开机就打开蓝牙

    我的ubuntu默认就有蓝牙功能 xff0c 也可以用 xff0c 但每次重启就很要重新打开蓝牙 xff0c 很烦恼 xff0c 解决办法如下 xff1a 1 sudo apt get install blueman bluez 2 vim
  • 【百度OCR】java调用百度OCR接口实现文字识别

    百度智能云文字识别 https ai baidu com 创建应用 参考博客 xff1a Java基于百度API接口实现智慧文字识别 百度AI开放平台 xff0c 文字识别接口 获取access token 百度AI 对接百度AI 增值税发
  • 使用某个用户登录命令:kinit adminad

    使用某个用户登录命令 xff1a kinit admin admin 票据生成方法 xff1a hdfs 票据 su hdfs klist hdfs rdspproduction 64 CARS COM 票据 然后切换到155机器 执行 s
  • Python3+Selenium框架搭建

    Webdriver概述 Webdriver Selenium2 xff09 是一种用于Web应用程序的自动测试工具 xff0c Thoughtworks公司一个强大的基于浏览器的开源自动化测试工具 xff0c 通常用来编写web应用的自动化
  • 算法题1:字符序列交换(阿里巴巴笔试题)

    题目 xff1a 若初始序列为gbfcdae xff0c 那么至少需要多少次两两交换 xff0c 才能使该序列变为abcdefg xff1f 任给一个自由a g这7个字母组成的排列 xff0c 最坏的情况下需要至少多少次两两交换 xff0c