algorithm 相关问题

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

计算赚取的最高积分

我在一次采访中遇到这个问题,我尝试阅读了很多次,但我无法清楚地理解它。 为了促进身体健康,他们在门户网站上推出了“GetFit”

回答 1 投票 0

通过分支和层次结构确定在 JavaFX 中实现生命树可视化

我正在开发一个项目,使用 JavaFX 可视化生命之树,该项目基于 Kaggle 的数据集:生命之树数据集。 该数据集将物种组织成分层树结构,包括

回答 1 投票 0

计算 (a^(2^N))%m 的最快算法?

有一些众所周知的密码学算法来计算模幂 (a^b)%c(例如这里的从右到左二进制方法:http://en.wikipedia.org/wiki/Modular_exponentiation)。 但是做

回答 4 投票 0

如何从 Leetcode 值列表构造二叉树?

对于以下问题: 输出/正确结果指定为: 输出:[3,9,20,null,null,15,7] 我不确定该输出实际上代表什么。我尝试按级别扫描它。例如 3 是...

回答 2 投票 0

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

我有一个数组,表示为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

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