Find the nth most frequent number in array.
(There is no limit on the range of the numbers)
我想我们可以
(i)使用映射将每个元素的出现存储在C++中
(ii)在元素出现(或频率)的线性时间内建立一个最大堆,然后提取到第N个元素,每次提取需要log(n)时间来堆积。
(iii)我们将得到第N个最频繁的数字的频率
(iv)然后,我们可以通过散列进行线性搜索,以找到具有该频率的元素。
时间- O(NlogN)空间- O(N)
有没有更好的方法?
我正在尝试用C语言编写一个简单的代码,它创建30个随机数,并计算这些随机数在一个数组中出现的频率。
但我有一个问题,当我打印它们出现的时间时,它们会重复:
-- 5 -- 2 -- 5 --
The number 5 is repeated 2 twice
The number 2 is repeated 1 twice
The number 5 is repeated 1 twice
但我需要这样的东西:
-- 5 -- 2 -- 5 --
The number 5 is repeated 2 twice
The number 2 is repeated 1 twice
代码:
#
我已经创建了一个数组列表,并随机插入了几个元素。我试图找出每个元素出现的频率。我尝试了两种方法,两种方法都有效。第一种方法是使用fine.The中可用的直接方法,即,
Collection.frequency(collection,"element");
第二种方法是将ArrayList元素放入HashMap中并找出频率
List<String> elements = new ArrayList<String>();
elements.add("A");
elements.add("B");
你有一个已知大小为n的键的数组或列表。这个列表中有多少个唯一键是未知的,可以小到0,最大到包括n。键没有特定的顺序,它们实际上不可能是,因为这些键没有大于或小于的概念,只有相等或不等的概念。现在,在你说hash map之前,我认为还有一个条件打破了这个想法:每个键的值都是私有的。您可以获得的有关密钥的唯一信息是它是否等于另一个密钥。所以基本上:
class key{
private:
T data;
...
public:
...
bool operator==(const key &k){return d
我有两个输入数组X和Y,我想返回数组X中出现频率最高的元素。
一种简单的方法是,对于数组X的每个元素X,我线性地搜索数组Y的出现次数,然后返回出现频率最高的元素x。下面是伪算法:
max_frequency = 0
max_x = -1 // -1 indicates no element found
For each x in X
frequency = 0
For each y in Y
if y == x
frequency++
End For
If frequency &g
编写一个程序,该程序接收列表中的输入n个元素,并作为输出输出,如果有一个元素出现不止一次,则打印True,否则为False。这就是我已经做过的,但它不起作用,我也不知道为什么,它总是向所有人展示“错误”。
lst = []
n = input().split()
flag = False
for i in n:
if n.count(i) > 1:
flag = True
break
print(flag)
我们如何才能最有效地做到这一点?给定具有重复项的列表,任务是在列表中重新排列项目,使两个相邻项都不相同。
Input: [1,1,1,2,3]
Output: [1,2,1,3,1]
Input: [1,1,1,2,2]
Output: [1,2,1,2,1]
Input: [1,1]
Output: Not Possible
Input: [1,1,1,1,2,3]
Output: Not Possible
编辑:一般算法也很好!它不需要是Python。
此代码的目标是计算给定列表中出现次数最多的单词。我打算通过遍历字典来做到这一点。如果一个单词出现的次数超过了存储在变量rep_num中的值,它将被重新赋值。目前,变量rep_num保持为0,并且不会重新分配到单词在列表中出现的次数。我相信这与试图在for循环中重新分配它有关,但我不确定如何解决这个问题。 def rep_words(novel_list):
rep_num=0
for i in range(len(novel_list)):
if novel_list.count(i)>rep_num:
rep_num=novel
我有一个使用节点的链表,我还有一个方法,当你添加一个数字时,这个方法会对它们进行排序。因此,当我完成数字的相加时,输出是一个排序列表,问题是我必须计算一个数字重复了多少次,所以我拥有的node方法可能是这样的:
class Node {
int value;
int freq;
Node next;
} private Node root;
现在,我正在尝试此代码,以便保存比较排序列表值的数字的频率。
public void frequencies(){
Node neew=root;
Node current = neew.next;
i