当前位置: 首页 > news >正文

LeetCode面试题Day15|LC219 存在重复元素Ⅱ、LC229 汇总区间

题目一:219重复元素

指路:

. - 力扣(LeetCode)219 存在重复元素Ⅱ

思路与分析:

本题要求找出在数组中相距在(0, k]内且元素值相同的数。那么我们定义一个哈希表,用数组中元素作为键,将其出现的下标作为值。键唯一时值为出现的下标,当下标差小于等于k时返回true,否则返回false。

代码:

class Solution {
public:bool containsNearbyDuplicate(vector<int>& nums, int k) {unordered_map<int, int> map;  // 用数组中的值做键,用出现的下标做值构成键值对for (int i = 0; i < nums.size(); i++) {int key = nums[i];if (map.count(key) && i - map[key] <= k) return true;map[key] = i;}return false;}
};

题目二:汇总空间

指路:

. - 力扣(LeetCode)228 汇总空间

思路与分析:

因为本题要求返回的是vector的string类型,那么我们定义一个最终结果集。题意非常明确,当一个区间内数字连续时将首尾元素添加到字符串内加上特定符号返回。当首尾元素一致时返回首元素字符串。那么我们将起始指针定在数组的元素首位置,当后面一个数值与其差值为1时终止元素后移直到相邻两元素不连续,此时将连续的起止指针转换为字符串并在中间加入指定字符"->"。

代码:

class Solution {
public:vector<string> summaryRanges(vector<int>& nums) {vector<string> ret;  // 最终结果集int i = 0;int n = nums.size();while (i < n) {int low = i;  // 区间起始指针i++;while (i < n && nums[i] == nums[i - 1] + 1) {i++;  // 当前后两个数差为1时区间终止后移一个}int high = i - 1;  string tmp = to_string(nums[low]);  // 起始指针从int转成字符串if (low < high) {tmp.append("->");  // 添加符号tmp.append(to_string(nums[high]));  // 添加终止指针指向元素}ret.push_back(move(tmp));// tmp表示指定的左值对象,move函数返回tmp对象的右值形式,将其添加进最终结果集}return ret;}
};


http://www.mrgr.cn/news/5587.html

相关文章:

  • [RCTF2015]EasySQL1
  • Kuberneters Pod调度基础
  • sqlite blob 数据检索(基于sqlite3_get_table的优化)
  • 如何将TRIZ技术融入到智能家居的产品设计流程中?
  • 【图文并茂】ant design pro 如何优雅奇妙地让创建和更新页面共用一个 form
  • 0x01 GlassFish 任意文件读取漏洞复现
  • 使用 Python和 FFmpeg 批量截图视频到各自文件夹中
  • 【Fiddler】Fiddler抓包工具(详细讲解)_抓包工具fiddler
  • Pulsar官方文档学习笔记——架构概览
  • 芯片后端之 PT 使用 report_timing 产生报告 之 -nets 选项
  • springboot叙州区私厨到家网站---附源码98558
  • flv和 rtmp视频负载类型的差异
  • 使用 PowerShell 自动化 Windows 系统管理任务
  • CoppeliaSim(V-Rep)与ROS1、ROS2接口变迁-2024-
  • burpsuite xssValidator插件(xss插件)
  • 【GH】【EXCEL】P3: Set Conditional Formatting To Excel Data By Gh
  • 旅游巴士(bus)【CSPJ2023】
  • 根据正则表达式生成等价类测试用例的设计和实现思路
  • TikTok达人带货秘籍:打造从流量到转化的高效社交电商闭环
  • vue中 在scoped下通过@import引入scss的作用域?