- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我基本上必须编写一个函数,它接受一个数组、一个表示数组中元素的 int n 和一个表示数组中第 k 个最小 int 的 int k (不是第 k 个最小位置)。不允许修改(排序)数组。我花了一段时间试图弄清楚这个解决方案,但我一直让自己感到困惑。
有人可以尝试向我解释一下吗?谢谢!
int
kth_smallest(int A[], int n, int k) {
int i, j;
int smaller, equal;
for (i = 0; i < n; i++) {
smaller = 0;
equal = 0;
for (j = 0; j < n; j++) {
smaller += (A[j] < A[i]);
equal += (A[j] == A[i]);
}
if (smaller <= k && k < smaller + equal) {
return A[i];
}
}
printf("No %d'th smallest possible in array of %d items\n", k, n);
exit(EXIT_FAILURE);
}
这是我针对一些测试数据计算的步出解决方案。
A[4] = {1,1,4,3} | n = 4 | k = 3 | Expected outcome = 4
Loop 1 (A[i] = 1) :
smaller = 0.
equal = 2.
test: smaller <= k && k < smaller+equal | 0 <= 3 && 3 < 2 | FALSE
Loop 2 (A[i] = 1):
smaller = 0.
equal = 2.
test: smaller <= k && k < smaller+equal | 0 <= 3 && 3 < 2 | FALSE
Loop 3 (A[i] = 4):
smaller = 3.
equal = 1.
test: smaller <= k && k < smaller+equal | 3 <= 3 && 3 < 4 | TRUE
RETURN A[i] (=4). (Which matches expected)
Third smallest int in A is 4, with 1 and 3 before it.
最佳答案
提示:在理解此类算法时,首先考虑基本(和极端)情况通常会很有帮助。首先假设数组中的所有元素都是不同的。然后,当您到达 'if' 子句时,'smaller' = 小于当前检查元素 (A[i]) 的元素数,并且 'equal' = 1。因此 'if' 子句变为:
if (smaller <= k && k < smaller + 1)
这必然意味着
smaller = k
因此,通过返回 A[i],您将返回数组中具有 (k-1) 个较小元素的元素(因为“k”是基于 0 的索引),即第 k 个最小元素,如预期的那样。现在看一个所有元素都相等的示例。较小 = 0 且等于 = n(始终)。因此 0..n-1 范围内的任何“k”都将返回数组中的单个数字,再次如预期。现在再次考虑你的例子,看看你是否能更好地理解它。祝你好运!
关于有人可以解释一下这个 "kth smallest integer in an unsorted array"代码吗? - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23977861/
我一直在研究一个程序,该程序应该在不同的组大小设置下测试快速选择算法的性能。您找到枢轴,算法会将所有元素分成 5 组。它应该找到每个组的中位数,并使用所有组中位数的中位数作为枢轴。我对最小的第 k 部
这problem要求在未排序的非负整数数组中找到第 k 个最小的元素。 这里的主要问题是内存限制:( 这里我们可以使用常量额外空间。 首先,我尝试了一个O(n^2) 方法[没有任何额外的内存],它给了
我想弄清楚 np.partition 函数是如何工作的。例如,考虑 arr = np.array([5, 4, 1, 0, -1, -3, -4, 0]) 如果我调用 np.partition(arr
我有代码可以在 golang 中从列表的最后一个元素中找到第 k 个元素。我写了一个递归函数。当它到达列表的末尾时,它将返回计数为 1 并在进一步的返回中递增。当 count == k 时返回节点值。
题目地址:https://leetcode.com/problems/kth-largest-element-in-an-array/description/ 题目描述 Find the kth
本文关键词:算法题,刷题,Leetcode, 力扣,二叉搜索树,BST,第 k 小的元素,Python, C++, Java 题目地址:https://leetcode.com/problems/k
作为最近的一份工作申请的一部分,我被要求编写一个解决这个问题的代码。 鉴于, n = 围成一圈的人数。 k = 每次计数的人数 每个人都有一个唯一的(递增的)id。从第一个人(最低 id)开始,他们从
在java 8中如何有效地找到第K个最小的?第 K 个最小的是 http://www.geeksforgeeks.org/kth-smallestlargest-element-unsorted-ar
n个括号序列由n个"("s和n个")"组成。 一个有效的括号序列定义如下: 你可以找到一种方法来重复删除相邻的一对括号“()”,直到它变空。 例如"(())"是一个有效的括号,你可以把第2和第3位的p
题目地址:https://leetcode.com/problems/kth-largest-element-in-a-stream/description/ 题目描述 Design a clas
我基本上必须编写一个函数,它接受一个数组、一个表示数组中元素的 int n 和一个表示数组中第 k 个最小 int 的 int k (不是第 k 个最小位置)。不允许修改(排序)数组。我花了一段时间试
在算法题“Find the Kth Smallest Element in a BST”中( https://leetcode.com/problems/kth-smallest-element-in
我是一名优秀的程序员,十分优秀!