青训营X豆包MarsCode技 术训练营第一课 豆包MarsCode Al刷 题

18 阅读2分钟

问题分析: 1、参数: vector& nums: 输入的整数数组。 int k: 需要返回的前k个高频元素的数量。 2、局部变量: unordered_map<int, int> freqMap: 用于存储每个数字的频率。 vector<pair<int,int>> result: 存储哈希表中的键值对(数字及其频率)。 stringstream ss: 用于构建最终返回的字符串。 3、逻辑流程: 构建频率映射: 遍历输入数组 nums,使用 unordered_map 记录每个数字的频率。 存储映射到结果向量: 将 freqMap 中的每个键值对(数字及其频率)添加到 result 向量中。 排序: 使用 sort 函数对 result 向量进行排序,排序依据是元素的频率(降序)。 构建返回字符串: 遍历排序后的 result 向量的前 k 个元素,将它们转换为字符串并使用逗号分隔,存储在 stringstream 中。 返回结果: 将 stringstream 中的内容转换为字符串并返回。

  1. 编程基础与语法: • 通过编写代码,我们能够巩固和加深对编程语言基础语法的理解,如变量、数据类型、控制结构(如循环和条件判断)、函数等。
  2. 问题解决能力: • 编程题目要求我们分析和解决问题。这锻炼了我们的逻辑思维、批判性思维和创新能力,使我们学会如何将复杂问题分解为可管理的部分,并找到有效的解决方案。
  3. 算法与数据结构: • 许多编程题目涉及算法和数据结构的应用。通过实践,我们可以学习并掌握各种算法(如排序、搜索、动态规划等)和数据结构(如数组、链表、树、图等)的使用和优化。
  4. 调试与测试: • 在编写代码的过程中,我们经常会遇到错误和异常。这教会了我们如何有效地调试代码,使用调试工具,以及编写测试用例来验证代码的正确性。
  5. 性能优化: • 对于一些复杂的编程题目,性能优化可能是关键。通过实践,我们可以学习如何分析代码的性能瓶颈,并采取相应的优化措施,如改进算法、减少不必要的计算
  6. 持续学习与成长: • 编程题目往往涉及广泛的知识领域,这鼓励我们保持好奇心和学习态度,不断探索和尝试新的技术和方法。 总之,通过解决编程题目,我们不仅能够提升编程技能,还能够培养一系列重要的软技能和思维方式,这些都将对我们的职业生涯和个人成长产生深远的影响。