当前位置: 首页 > 知识库问答 >
问题:

至少不需要交换,以确保没有两只猫或狗在相邻的地方

蔺霄
2023-03-14

我们得到一个数组,数组中的元素代表猫和狗。我们必须通过交换来重新排列元素,使得没有两只猫或狗在相邻的地方。

注意:我们可以将数组的一个元素与任何元素交换。

Eg: given input: [d,c,d,c,c]
exp o/p: 2
Explanation : 
step 1: swap index-0 and index-1 =>[c,d,d,c,c]
step 2: swap index2 and index-3  =>[c,d,c,d,c]

input: [c,d,d,c,c,c]
exp o/p : not possible

共有1个答案

赏成益
2023-03-14
  1. 检查它们中的任何一个是否为n==m 1n==m是否为true。
  2. 如果情况不是这样,则不可能返回。
  3. 如果n==m1,我们知道在所有偶数索引上必须有一个n,对于所有奇数索引,必须有一个m
  4. 编辑:如果n==m初始值很重要!如果交换的数量是算法中最重要的部分,请在两种可能的变体上运行第5步,并比较结果子数组的长度。[1]谢谢@Ishpreet指出这一点!
  5. 遍历数组,检查是否有nm。如果相应索引的值是错误的(例如,在索引0上有一个m而不是n,请注意数组中错误放置的nm的索引是向下的。
  6. 之后,根据两个子数组交换数组中写下来的索引值。

[C,C,C,C,D,D,D,D]

错误C=[1,3]

错误的D=[4,6]

交换(1,4)和(3,6)

结果:[C, D, C, D, C, D, C, D]

[1] 算法的复杂性不会因此而改变。

 类似资料:
  • 在ABI的NDK toolchains文件夹中找不到前缀为的工具链 我不想升级,因为担心它可能会破坏我的应用程序,需要使用NDK来与C++一起工作。 按照以下步骤解决错误-错误:在ABI的NDK toolchains文件夹中找不到前缀为:llvm的工具链

  • 问题内容: 我在SQL Server中有一个带有两个数字列的表。必须至少填写这些数字字段之一。如何编写检查约束来验证这一点? 问题答案: 这可以通过检查约束来完成,该约束验证null值并将结果与​​或匹配 以下是测试案例

  • 问题内容: 在Spring MVC中,有两个上下文。一种是由引导的应用程序上下文或全局上下文。它采用参数中提到的所有配置文件。 现在,如果您还使用Spring MVC,则需要Dispatcher Servlet,它会启动另一个容器,该容器也称为Web应用程序容器。该容器将全局容器作为父容器。 将struts1与spring集成时,只有一个上下文。Spring MVC为什么需要两个?使用spring

  • TLDR;在主题交换和由使用者动态创建的队列的上下文中,当没有使用者使用消息时,如何重新传递消息/通知生产者? 我有以下组件: null 生成器使用向exchange发送消息。 每个使用者创建一个队列,并为一组路由密钥(例如,Pictures.*和Videos.Trending)将交换绑定到这个队列。 当使用者处理完文件后,它会将结果推送到processing_results队列中。 现在--这工

  • 我有值,我希望它们至少有两个十进制数字,但我不想修剪其余的数字。 是否有构建方法或更优雅的方法来实现这一点? 我不能使用,因为我希望在存在其他小数时保留它们。

  • 问题内容: 在Python中,我已经看到使用此语法交换了两个变量值: 这是否被认为是交换两个变量值的标准方法,还是有其他一些习惯上最常用的交换两个变量的方法? 问题答案: Python从左到右计算表达式。请注意,在评估分配时,右侧的评估先于左侧。 http://docs.python.org/3/reference/expressions.html#evaluation-order 这意味着该表达