首页 > 试题广场 >

换座位

[编程题]换座位
  • 热度指数:248 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
牛家村准备开会选举新任村长,村长安排了一个位置表Position(桌子是圆桌!!!所以第一个人和最后一个人是挨着坐的)。村长的候选人牛牛,牛妹,牛大三个。
为了让选举进行的更加顺利,村长想让三位的支持者分别坐在一起 他想知道最少多少人需要换座位才能使得三类支持者都分别坐在一起。
返回一个整数代表最少多少人需要换座位才能使得三类支持者都分别坐在一起。

示例1

输入

[1,2,2,1,3]

输出

2

说明

将最后一个人与倒数第二个人的位置互换

备注:
给定 Table数组

1代表牛牛阵营,2代表牛大阵营,3代表牛妹阵营
头像 摸鱼学大师
发表于 2021-08-08 15:09:48
精华题解 思路: 题目的主要信息: 一个循环的圈,即数组首尾相接,数组中只有1 2 3三种元素 要使这三种元素相同的元素都排在一起,即类似111122222333或者112222233311 123的顺序不限 方法一:哈希表+贪心具体做法:因为123的顺序不限,因此我们的结果有6中排列组合方式,分别是:1 展开全文
头像 Maokt
发表于 2021-08-15 21:30:13
算法思想一:哈希表 解题思路: 根据题意可知,三个人的位置为123,则排列方式有6中:123,132,213,231,312,321,因此只需要检查这六种预定结果需要变换多少次,取其最小值即可,使用到了哈希表记录每个数字出现的次数 检查每个预定结果需要多少次交换的时候,需要调用ge 展开全文
头像 棒棒糖🍭201906101800876
发表于 2021-10-13 12:17:23
NC541 换座位 题目描述: 给你一个环状数组,数组的元素是1,2,3。 要想把它换成所有1相邻,所有2相邻,所有3相邻,至少需要多少人换座? 1. 解法一 要想换成123相邻,需要枚举123的六种排***定先后关系,然后取每种换法的最小值。 首先计算每个数字出现了多少次,用map维护; 接下来 展开全文
头像 AimerAimer
发表于 2021-10-14 20:45:57
题意:         有三种不同的值,分别为1,2,3。         每种值有若干个,先要将相同的值靠在一起。(注意:首尾是相连的)  &nbs 展开全文
头像 Ivy2019
发表于 2022-09-12 16:48:23
描述 牛家村准备开会选举新任村长,村长安排了一个位置表Position(桌子是圆桌!!!所以第一个人和最后一个人是挨着坐的)。村长的候选人牛牛,牛妹,牛大三个。 为了让选举进行的更加顺利,村长想让三位的支持者分别坐在一起。 他想知道最少多 展开全文