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

按最小移动次数排序数组

孟茂
2023-03-14

理论上可以通过只移动未按排序顺序排列的元素来对length(array)-length(longestIncreasingSubsequence(array))中的数组进行排序。

[ 1, 8, 5, 2, 4, 6, 3, 9, 7, 10 ]

最长的递增子序列为:

[ 1, 2, 4, 6, 7, 10 ]

这些要素的指数如下:

[ 0, 3, 4, 5, 8, 9 ]

因此,我们需要移动的指数是:

[ 1, 2, 6, 7]
[ 7, 4, 2, 8]

共有1个答案

姬国安
2023-03-14

您的问题是源位置是以前面的顺序表示的,而目标位置是以最后的顺序表示的。当你做1->7时,你还不知道7在前面的顺序中的位置。你需要为所有的动作做出调整。

原来的招式是:

from: [ 1, 2, 6, 7]
to:   [ 7, 4, 2, 8]

步骤1

from: [ 1, 1, 4, 4]
to:   [ 5, 3, 2, 8]

步骤2

我们有的是正确的位置为4个移除,然后是4个插入。现在我们要交错删除和插入。

在(1,1,4)处拆卸之前,必须先插入(5)处。5比其中任何一个都大,所以它不会影响位置(1,1,4),但是5会受到影响,因为3个移除是在插入点左侧完成的。5变成8。

for i = 0 to size-1
    for j = size-1 to i+1
        if from[j] < to[i] then increment to[i]
        else increment from[j]

我们应该得到数组:

from: [ 1, 1, 5, 6]
to:   [ 8, 3, 2, 8]

这些是在移动时以正确的位置执行的最后移动。移动可以从左到右读取:在1处移除,在8处插入。在%1处拆下,在%3处插入。在5处拆下,在2处插入。在6处拆下,在8处插入。

 类似资料:
  • 我们有一个 n 个正整数的数组。可接受的做法是将所有元素增加 1 或 2 或 5,但一个元素除外。我们需要找出最小操作数,以使所有数组元素的数量相等。 经过搜索,我找到了一种方法: 找出非最小元素与最小元素之间的所有差异 通过使用硬币找零方法,找到为所有差异找零所需的最小硬币数量 返回所有这些最小硬币数量的总和 但是这种方法对于此测试用例失败: 数组:< code>1,5,5 最小操作数:3 ()

  • 我在寻找字典上最小的字符串的排列数。 例如,< code>bbaa现在,字典上最小的字符串是< code>aabb,因此,排列是, < code>(1,2,3,4),(2,1,3,4),(1,2,4,3),(2,1,4,3)也就是4。 我对它的想法(在python中)是找到最小的字符串(基本上将其排序为字符串),然后创建一个计数器来存储每个字符的计数。 因为,我们不需要一个在字典上变得更大的字符串

  • 当且仅当“字符串中的所有不同字符重复相同次数”时,称字符串为良好字符串。 现在,给定一个长度为n的字符串,我们必须在这个字符串中进行的最小更改次数是多少,这样字符串就变得正常了。 注意:我们只允许使用小写英文字母,我们可以将任何字母更改为任何其他字母。 示例:让String为yyxzzxxx 那么这里的答案是2。 说明:一种可能的解决方案YYXYXX。我们已将2“z”更改为2“y”。现在“x”和“

  • 问题内容: 我有2个表格-包含课程ID和课程名称的课程以及包含每个课程标签的tagCourse。 我想编写一个函数,该函数按给定的标签数组搜索课程,并按匹配标签的数量将其返回。但是我不知道如何正确,有效地编写它。请帮我。 IE。 问题答案: CREATE OR REPLACE FUNCTION search_by_tags(tags varchar[]) RETURNS TABLE (id_cou

  • 1.索引x处元素可以在一次移动中直接移动到x+1,x+2位置或x-1,x-2位置,之后移动计数将增加。 例如,在数组中,最小移动将为31: 索引4处的所有8个元素可以在总共16次移动中移动到索引0(因为所有8个元素都需要2次移动)。移动:16. 索引5中的3个元素可以在3步中移动到索引3(3个元素每步移动1步),索引5中剩余的5个元素可以在10步中移动到索引2(5个元素每步移动2步,所以总共移动1

  • 问题内容: 我需要运行一个MySQL查询,该查询的顺序由数组值确定。 我的数组是可变的,但数组中的值对应于我的数据库表中名为“ ID”的字段,因此我希望结果以ID顺序9、1、4返回。 这在MySQL中是否可能,还是可以在之后使用数组对MySQL $ result进行排序?您可以假设返回的唯一值是数组中的值。 问题答案: http://dev.mysql.com/doc/refman/5.5/zh-