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

Kth最小元素和Kth元素?

贺靖
2023-03-14

我真的很困惑Kth最小元素和Kth元素之间到底有什么区别。

第k个元素=第k个元素是数组=数组[k-1]

但是,什么是第k个最小元素?我有一个家庭作业问题,我需要写一个算法来找到2个排序数组中的第k个最小元素。我不是来要求你做作业的,你不需要给我任何算法或代码。我只想理解它是什么意思。Kth最小元素和kth元素之间有什么不同。

我问这个问题的原因是:我在谷歌上搜索什么是第k个最小的元素,其中一个是:

For example if A = [10, 20, 40, 60] and B =[15, 35, 50, 70, 100] and K = 4 
then solution should be 35 because union of above arrays will be C = 
[10,15,20,35,40,50,60,70,100] and fourth smallest element is 35.

它与数组的第k个元素完全相同。答案是UB[k-1]。

另一个例子是:

A = [3, 5, 9, 15, 27, 33, 35, 41, 57, 65]
B = [1, 16, 18, 42, 44, 46, 48, 50, 52, 54]

AUB = [1, 3, 5, 9, 15, 16, 18, 27, 33, 35, 41, 42, 44, 46, 48, 50, 52, 54, 57, 65]
and if k = 6
then AUB[6-1] = 16;
if k = 8
then AUB[8-1] = 27;

我说得对吗?kth最小元素不在AUB[k-1]是否有例外?如果是,你能给我举个例子,并解释一下吗?

编辑:我刚刚看到有人说第k个最小的元素是按升序排列的数组[k-1]。

我问老师一个问题:

当我们谈论第k个元素时,它是在[k]还是[k-1]

他的回答是:

仔细阅读问题陈述。输出应该是S U T中2n个元素中第k个最小的元素。输出不一定在任何一个列表的索引k处。为什么会这样?

我不明白。输出不一定在两个列表的索引k处?这意味着什么?

共有3个答案

阮鸿煊
2023-03-14

两个数组的并集就是一个包含两个数组的所有元素的数组。

例如A[1,20,40,70]和B[10,50,60,80]上述两个数组的并集可以是C[1,20,40,70,10,50,60,80]

现在假设k的范围从1开始(包括1),假设k=3,现在第k个元素是40,但第k个最小元素是20。

有效地做到这一点的方法取决于你如何做到这一点。一种(不太有效)的方法可能是简单地使用k个嵌套迭代,并从未排序的联合数组中找到第k个最小元素。

另一种方法可能是在取并集后对数组进行排序,另一种方法是简单地合并两个数组,这样就可以对结果并集进行排序(合并排序:合并过程)。在这种情况下,生成的数组将具有与第k个元素相同的第k个最小元素。

盛跃
2023-03-14

输出不一定在两个列表的索引k处?这意味着什么?

这意味着您应该在不创建C的情况下解决问题,也就是AUB

相反,您应该并行迭代两个数组,直到找到第k个最小的元素。

逻辑

Ai = 0, Bi = 0
Loop K-1 times:
    if A[Ai] < B[Bi] then Ai++ else Bi++
kth smallest = min(A[Ai], B[Bi])

实例

A = [10, 20, 40, 60], B =[15, 35, 50, 70, 100], K = 4

Ai = 0, Bi = 0: A[0] < B[0] so Ai++
Ai = 1, Bi = 0: A[1] > B[0] so Bi++
Ai = 1, Bi = 1: A[1] < B[1] so Ai++
Ai = 2, Bi = 1: min(A[2], B[1]) = 35

第四个最小值是35,位于B[1]

如您所见,输出不在任何列表的索引3(=4-1)。

Kth最小元素和Kth元素?

因为你从不创建一个组合列表,而是直接在两个不同的列表上工作,所以没有第k个元素,所以标题中提出的问题是没有意义的。

江育
2023-03-14

正如您已经指出的,这两个数组的并集将是您要查看的内容。下面是一个例子:

S = [0,4,5,7]
T = [1,2,8,9]
then A = S v T = [0,1,2,4,5,7,8,9]

现在,当你查看这个数组时,你会发现第k个元素位于索引k-1。这是因为我们倾向于从一开始计算。所以我们说第一个元素,我们指的是索引0处的元素。

接下来,这也是你另一个问题的答案。因为你有两个数组,第k个最小的数字将在A[k-1],但是你的老师的意思是在任何一个数组中,所以ST它们可能不在indexk-1。在上面的例子中,第5个最小的数字是5在index4ofA,但是它是SS[2]中的第三个元素。

 类似资料:
  • Question leetcode: Kth Largest Element in an Array lintcode: Kth Largest Element Problem Statement Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sor

  • 本文向大家介绍用C ++查找带排序行的矩阵的Kth最小和,包括了用C ++查找带排序行的矩阵的Kth最小和的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个m * n矩阵,称为mat,一个整数k,mat的行以非降序排列。我们可以从每一行中精确选择一个元素来形成一个数组。我们必须在所有可能的数组中找到第K个最小的数组和。 因此,如果输入像mat = [[1,3,11],[2,4,6]] 3 2

  • 我实现了c程序,可以找到矩阵的元素:行的最大元素,同时列的最小元素,或行的-min元素,同时列的最大元素。例如,我们有数据。包含以下内容的txt文件: 4 7 8 9 10 6 5 4 11 5 0 1 12 4 2 7 13- 其中4是n-矩阵大小(4x4),7和10是这些数字。 下面是代码: 问题:我想知道我的代码是不是“脏”代码?因为我总是渴望让一切变得如此困难,只要有可能让它变得容易。是否

  • Kth Largest Element in an Array 描述 Find the k-th largest element in an unsorted array. For example, given [3,2,1,5,6,4] and k = 2, return 5. Note: You may assume k is always valid, 1 ≤ k ≤ array's len

  • Kth Smallest Element in a BST 描述 Given a binary search tree, write a function kthSmallest to find the kth smallest element in it. Note: You may assume k is always valid, 1 ≤ k ≤ BST's total elements.

  • 本节通过求数组的最大和最小值来提高初学者对数组的一些基本应用。 程序运行结果如下: 最高成绩:100 最低成绩:67 将变量 min 与 max 初值设成数组的第 1 个元素后,再逐一与数组中的各元素相比。比 min 小,就将该元索的值指定给 min 存放,使 min 的内容保持最小。同样,当该元素比 max 大时,就将该元素的值指定给 max 存放,使 max 的内容保持最大。for 循环执行完