
今天正式开启刷题之旅,目标很简单:持续 + 深度 + 总结。
第一天选择了两道经典入门题:Two Sum 和 Add Two Numbers,属于哈希表 + 链表的基础题型。
🧠 LeetCode 1 – Two Sum(两数之和)
💡 思路总结
这题的核心就是:
👉 用空间换时间(哈希表)
- 遍历数组
- 对每个数
nums[i] - 查找
target - nums[i]是否已经存在 - 如果存在,直接返回索引
⚡ 关键点
unordered_map用来存储「值 → 下标」- 查找时间复杂度 O(1)
- 总体时间复杂度 O(n)
💻 代码实现
#include <unordered_map>
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int ,int > map_list;
for(int i = 0;i<nums.size();i++){
int temp = target - nums[i];
if(map_list.count(temp))return {map_list[temp],i};
map_list[nums[i]] = i;
}
return {};
}
};
📌 知识点总结
- 哈希表(unordered_map)核心用途:
- 快速查找
- 去重 / 记录状态
- 常见套路:
- “找另一半” →
target - x
- “找另一半” →
- 面试高频模型:
👉 一边遍历,一边查找
🔗 LeetCode 2 – Add Two Numbers(两数相加)
💡 思路总结
这是一个典型的链表模拟 + 进位问题
- 模拟“竖式加法”
- 两个链表逐位相加
- 需要处理:
- 不同长度
- 进位(carry)
⚡ 关键点
- 用
dummy头节点简化操作(非常重要!) - 循环条件:
l1 || l2 || carry - 每一位:
sum = x + y + carry
💻 代码实现
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
//链表没节点就按 0,进位没处理完就不能停
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* cur_l1 = l1;
ListNode* cur_l2 = l2;
ListNode* dummy = new ListNode(0);
ListNode* result = dummy;
int flag = 0;
while (cur_l1 != NULL || cur_l2 != NULL || flag != 0) {
int x = (cur_l1 != NULL) ? cur_l1->val : 0;
int y = (cur_l2 != NULL) ? cur_l2->val : 0;
int sum = x + y + flag;
flag = sum / 10;
result->next = new ListNode(sum % 10);
result = result->next;
if (cur_l1 != NULL) cur_l1 = cur_l1->next;
if (cur_l2 != NULL) cur_l2 = cur_l2->next;
}
return dummy->next;
}
};
📌 知识点总结
- 链表经典技巧:
dummy head(虚拟头节点)
- 进位处理:
carry = sum / 10
- 边界条件:
- 空节点当 0 处理
- 最后一个进位不能丢
🧩 今日总结
今天的两道题虽然是入门题,但含金量很高:
| 题目 | 核心能力 |
|---|---|
| Two Sum | 哈希表 + 一次遍历 |
| Add Two Numbers | 链表 + 模拟 + 边界处理 |
👉 本质其实是在训练:
- 数据结构的选择能力
- 边界条件处理能力
- 代码结构清晰度
💬 写给自己的话
第一天,正式起步。
你已经迈出了最关键的一步——开始行动。
别小看这些“简单题”,真正的高手不是不会难题,而是:
把简单题做到极致,形成肌肉记忆。
接下来要做的不是“刷很多”,而是:
- 每一题都理解透
- 总结套路
- 形成自己的题感
🚀 坚持下去,你会越来越强。
—— 阿玉的刷题之路 Day 1
