尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

2025/12/5 今天学gemini的day1 lecode1和26等

2025/12/5  今天学gemini的day1 lecode1和26等
📅 发布时间:2026/6/19 10:33:50
2025/12/5 今天学gemini的day1 lecode1和26等

两数之和 (LeetCode 1)
考察点: 哈希表 (std::unordered_map) 的使用。
遍历数组,每遇到一个数 num,去哈希表里找有没有 target - num。如果有,返回下标;如果没有,把当前 num 和下标存入哈希表。

include

include <unordered_map>

class Solution {
public:
std::vector twoSum(std::vector& nums, int target) {
// Key: 数组中的数值, Value: 下标
std::unordered_map<int, int> map;
for (int i = 0; i < nums.size(); i++) {
int complement = target - nums[i];
// map.find() 如果没找到,会返回 map.end()
if (map.find(complement) != map.end()) {
return {map[complement], i};
}
map[nums[i]] = i; //这点不要迷map[complent]
}
return {};
}
};

注意点: 为什么用 unordered_map 不用 map?因为前者底层是哈希表,查询是 O(1);后者是红黑树,查询是 O(log n)。

删除有序数组中的重复项 (LeetCode 26)
考察点: 双指针 (Two Pointers)。
思路: 定义 slow 和 fast 两个指针。fast 在前面探路,如果 nums[fast] != nums[slow],说明找到了新元素,把新元素填入 slow+1 的位置,slow 前进一步。
class Solution {
public:
int removeDuplicates(std::vector& nums) {
if (nums.empty()) return 0; //为零返回
int slow = 0; //慢指针从头开始
for (int fast = 1; fast < nums.size(); fast++) { //从第二个元素开始处理
if (nums[fast] != nums[slow]) { //当新旧元素不一致时,处理慢指针
slow++;
nums[slow] = nums[fast];
}
}
return slow + 1; //slow是最后一个元素的下标,数组元素比下标+1
}
};
注意不要写成map
class Solution {
public:
int removeDuplicates(vector& nums) {
std::map<int,int> mp;
auto p=nums.begin();
while(p!=nums.end()){
if(mp.find(p)!=mp.end()){
nums.erase(p);
}else{
mp[
p]=0;
p++;
}
//注意p++不要写到这个位置,因为erase() 会返回下一个有效迭代器 你直接 p++ 会跳过元素,导致漏删重复元素
}
return nums.size();
}
};
当不有序时可以用unordered_set

include

include <unordered_set>

using namespace std;

int removeDuplicates(vector& nums) {
unordered_set seen; //unordered_set是哈希,set是红黑树
int writeIndex = 0; // 用来覆盖重复元素

for (int i = 0; i < nums.size(); ++i) {if (seen.find(nums[i]) == seen.end()) {nums[writeIndex++] = nums[i]; // 保留唯一元素seen.insert(nums[i]);}// 重复元素就跳过                                               //seen.insert(nums[i]);首先不要忘写,其次不要写到这个位置否则每次都会执行,重复元素也会再插入一   次,(虽然 set 会自动去重,不会报错)}return writeIndex; // 返回唯一元素个数                           //注意不要写成nums.size()因为本题实际没有删除,只是把后边元素往前了,所以后面还是有元素的,size不能   返回正确的元素个数

}

编译指令
g++ -o my_program hello.cpp -g -Wall
-o:指定输出文件名。

-g:生成调试信息(为了以后用 GDB 调试)。

-Wall:打开所有警告(Write clean code, don't ignore warnings)。

运行: ./my_program

相关新闻

  • 国产操作系统凝思磐石4.x x86架构镜像下载
  • 全面解析DoS攻击:防御策略与应急响应指南
  • 要提高脑电模型的准确性,就必须让模型学会“无视个体差异”,抓住真正稳定、跨人的特征。

最新新闻

  • 微信二次开发:JSSDK安全授权、Ticket多级缓存与动态签名防刷架构
  • 2026石河子黄金回收优质门店推荐,实时高价上门回收旧金金条 - 速递信息
  • 为什么大厂都在用Kafka?因为高并发系统根本离不开它
  • 免费OpenAI API密钥终极指南:5分钟开启AI开发之旅
  • 深入解析NXP LH7A404 SoC:从电气特性到功耗管理的嵌入式设计实战
  • 从SPX3819到CSM5133SE:国产LDO替代实战中的关键参数与选型考量

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号