algorithm 相关问题

算法是一系列明确定义的步骤,用于定义问题的抽象解决方案。当您的问题与算法设计相关时,请使用此标记。

在未排序的数组中搜索,其中给定元素的范围

我有一个数组,表示为A,包含整数。这些整数的范围落在区间 [1, 10^6] 内,数组的大小约为 50,000 个元素。我的目标是

回答 2 投票 0

如何有效地合并Python中元组列表中的重叠间隔?

我正在使用Python 中的数据集,其中有一个元组列表,每个元组代表一个间隔(开始、结束)。我遇到过这样的情况,其中一些间隔重叠,我需要合并

回答 1 投票 0

在 O(lgn) 中计算 2^n 的算法

我需要一个计算 2^n 的算法,即 O(lgn) 。我做了这样的事情: 算法函数 (n){ 如果(n==0)返回1; 否则 if ( n % 2 == 0) return 2 * func (n/2); 电子...

回答 2 投票 0

算法应该如何检查复合词是否可以从字典中的基本词派生出来?

我正在考虑如何构建一个跨语言词典,它存储“基本”单词(如“创建”,“创造”等),并且不存储派生单词(l.. .

回答 1 投票 0

如何找到完全二叉树最后一层最右边节点的位置?

我正在二叉树中做一个问题,当我遇到一个问题时,在完整二叉树的最后一层中找到最右边的节点,这里的问题是我们必须在 O(n) 时间内完成它...

回答 5 投票 0

如果向量中的两个字母相等,如何显示公共字符

例如,我有向量{'a','a','b','b','c'},我想获得最多的字母,即a和b,但这段代码的输出是a; #包括 #包括 #包括 例如,我有向量 {'a','a','b','b','c'} 我想获得最多的字母,即 a 和 b 但此代码的输出是 a; #include <iostream> #include <string> #include <vector> #include <algorithm> int getMostFrequentElement(std::vector<char> &arr) { if (arr.empty()) return -1; std::sort(arr.begin(), arr.end()); auto last_int = arr.front(); auto most_freq_int = arr.front(); int max_freq = 0, current_freq = 0; for (const auto &i : arr) { if (i == last_int) ++current_freq; else { if (current_freq > max_freq) { max_freq = current_freq; most_freq_int = last_int; } last_int = i; current_freq = 1; } } if (current_freq > max_freq) { max_freq = current_freq; most_freq_int = last_int; } return most_freq_int; } int main(){ std::vector<char> arr = {'a','a','b','b','c'}; char ret = getMostFrequentElement(arr); std::cout << "Most frequent element = " << ret; } 我可以知道为什么我的输出变成a而不是a和b吗? 输入向量arr{'a','a','b','b','c'} 预期输出是a和b 但是我的输出是a Vlad 的回答很好,应该被接受。 我想展示一个额外的、更“现代”的 C++ 解决方案。 函数体结构紧凑,仅由3行代码组成。它将计算 char 的所有出现次数,并按出现次数的降序对其进行排序。 因此,该函数的调用者可以显示各种信息。在下面的示例中,我显示了所有最上面的元素。 但可能会显示各种其他评价。 请参阅: #include <iostream> #include <vector> #include <utility> #include <algorithm> #include <set> #include <iterator> #include <unordered_map> // Writing some aliases to prevent later typing work and make the code a little bit more readable. --------------------- using DataType = char; using CounterType = unsigned int; using Pair = std::pair<DataType, CounterType>; using Counter = std::unordered_map<DataType, CounterType>; using Data = std::vector<DataType>; struct Comp { bool operator ()(const Pair& p1, const Pair& p2) const { return (p1.second == p2.second) ? p1.first<p2.first : p1.second>p2.second; } }; using CountedAndSorted = std::multiset<Pair, Comp>; // ---------------------------------------------------------------------------------------------------------------------- CountedAndSorted getMostFrequentElement(Data& data) { // Count Counter counter{}; for (const char c : data) counter[c]++; // Return counted and sorted result return {counter.begin(), counter.end()}; } // ------------------------ // Test/Driver code int main() { // Test Data Data d = { 'a', 'a', 'b', 'b', 'c' }; // Calculate result auto result = getMostFrequentElement(d); // Show output for (const auto& [c, count] : result) if (count == result.begin()->second) std::cout << c << ' '; } 您的函数仅返回排序中第一个最常见的字符作为整数 vector。 对于初学者来说,该功能的实现并不好。该函数不应对按引用向量传递的进行排序。由向量的所有者决定在调用该函数之前是否对向量进行排序。该函数不得修改传递给它的向量。 如果您希望该函数返回向量中所有最常见的字符,那么您需要从本质上更改该函数。 例如,该函数可以如下所示,如下面的演示程序所示。 #include <iostream> #include <vector> #include <map> #include <iterator> #include <algorithm> std::vector<char> getMostFrequentElement( const std::vector<char> &v ) { std::vector<char> result; std::map<char, size_t> m; for ( const auto &c : v ) ++m[c]; auto it = std::max_element( std::begin( m ), std::end( m ), []( const auto &p1, const auto &p2 ) { return p1.second < p2.second; } ); if ( it != std::end( m ) ) { for ( const auto &p : m ) { if ( p.second == it->second ) result.push_back( p.first ); } } return result; } int main() { std::vector<char> v = { 'a', 'a', 'b', 'b', 'c' }; auto result = getMostFrequentElement( v ); for ( const auto &c : result ) std::cout << c << ' '; std::cout << '\n'; return 0; } 程序输出为 a b

回答 2 投票 0

有人可以解释一下为什么这个解决方案不起作用吗?

问题: 您已获得一棵包含“N”个节点的二叉树,其中节点具有整数值。您的任务是返回二叉树(也是 BST)的最大子树的大小。 二进制

回答 1 投票 0

JS 数据结构/算法,用于从一组中随机挑选以降低可能性

我有一组问题,希望“随机”提出这些问题。一个问题可以被问多次,包括连续问。然而,提出问题后,很可能...

回答 1 投票 0

.NET 的 Array.Sort() 方法使用哪种排序算法?

.NET 的 Array.Sort() 方法使用哪种排序算法?

回答 7 投票 0

考虑到用户登录和注销的时间间隔很多,发现最大的高峰发生了

考虑到用户登录和注销的时间间隔很多,发现发生了最大的高峰。 例子: 登录:[1,5,5] 注销:[5,10,5] 最大高峰发生在 5 点,并且发生了三次。所以答案是3 登录:[...

回答 1 投票 0

找到方程的最小匹配值

我有一个整数数组,例如 [1, 2, 3, 6, 67] 我有一个等式: a*x+b*y=z,我可以使用这个方程中的数组值来替换 x 和 y,通过一些数组位置说 arr[i], arr[j] i an...

回答 1 投票 0

在 postgres/RDBMS 的列中实现 TTL 的最佳方法是什么?

我有一个系统,用于存储加入 postgres 数据库的日期。同一张表中还有一个奖项类别代码,如下所示: NO_AWARD - 当员工工作时间少于 1 年时 如何实现...

回答 1 投票 0

找到第 m 个最大的元素

给定一个包含 n 个整数的数组,数组中的值可以是 1 到 n 任意顺序。 给定另一个整数 m 作为输入。 现在从数组(上述数组的子数组)中选取 m 个项目并找到第 m 个最大元素...

回答 1 投票 0

在 Ortools 中使用 CP-SAT 进行无重叠调度

任何人都可以帮助我如何防止日程安排重叠,日程安排在房间分配方面不得重叠 def Schedule_variable(self): 对于 self.programs 中的程序: ...

回答 1 投票 0

我需要帮助对大量数据执行 FFT

我正在设计一个电路,需要对非常大的数字(大到几兆字节,以您认为最好的任何合理寄存器长度存储在存储器中)运行FFT。我想在 t 上运行 FFT...

回答 1 投票 0

将随机点与非自交直角折线连接

我发现了一些帖子,并知道随机点可以使用 ciecle 进行排序。然后可以按照排序的点顺序绘制非自交多段线。 然而,就我而言,我需要...

回答 1 投票 0

从链表中删除具有特定值的节点的代码无法删除所有节点

我正在做这个任务: 将元素(1-50 范围内的数字)作为用户的输入,并使用这些元素创建一个链接列表。然后删除所有值大于25的节点...

回答 3 投票 0

在 Java 中按每个用户的特定顺序维护列表

我有一个项目列表和一组用户。用户可以对列表项重新排序。每个用户都有自己的列表视图,他可以按照自己的方式排列项目。一件物品可以放置在不同的位置...

回答 4 投票 0

列出商品订购问题

我有一个项目列表和一组用户。用户可以对列表项重新排序。每个用户都有自己的列表视图,他可以按照自己的方式排列项目。一件物品可以放置在不同的位置...

回答 4 投票 0

给定 x 类型的部分排序数组<y => x 的第一次出现出现在 y 的第一个之前,平均排序 O(n)

i 被赋予一个任务来寻找一个采用数组 A 的算法,使得对于每个 x i 被赋予一个任务来寻找一个采用数组 A 的算法,使得对于每个 x 示例数组可以是 1,2,1,30,1,1,2,1,40,30,1,40,2, 50, 40, 50, 30 输出应为 1, 1, 1, 1, 1, 1, 2, 2, 2, 30, 30, 30, 40, 40, 40, 50, 50 我应该表明建议的算法平均运行时间为 O(n)。 我不知道从哪里开始.. 我唯一知道的是如何从理论上分析循环或嵌套循环的平均情况 对于非常具体的情况 任何帮助将不胜感激。 在输入数组的一次迭代中,您可以: 按照首次出现的顺序收集唯一值 数一下你每人有多少个 利用这些信息,您可以生成排序的输出。

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.