Leetcode Hot 100 | 滑动窗口
思想今天起的很早,来到编译原理的教室,空无一人,打开窗户换换气。果然到了大三,谁还会提早这么早到教室自习呢?校圈上、网络上总是有人询问所谓的通宵自习室在哪里,其实若能早起,能自习的地方有很多。
在本节,我们将见到两种类型的滑动窗口题型,同向而行与固定窗口大小。其中前者是双指针的一种,而后者一个指针就够了。滑动窗口的思想是增量更新,每到达一个新的位置后,只需要去掉边界外的值,增加新进来的值,而不需要对每个窗口进行遍历。
题目3. Longest Substring Without Repeating Characters这题要求我们找出字符串的最长子串,这个子串不含重复字符,而且是所有子串中最长的。
123456789101112131415161718192021class Solution {public: int lengthOfLongestSubstring(string s) { int left = 0; int len = 0; vector<int> cnt(128, 0); ...
Leetcode Hot 100 | 双指针
思想今天下了一整天的雨,多么适合分析一下「解雨水」这道题及其方法——双指针。双指针的思路是,采用两个指针分别记录两个不同的位置,从而完成题目。常见的情景有:
快慢指针。在链表中讨论;
相向滑动指针。如解雨水和最大接水容器;
同向滑动窗口。在滑动窗口专题讨论。
题目11. Container With Most Water这道题给了我们一堆间隔为 1、高度不同的柱子,要求找出哪两个柱子之间能盛放最多的水。
123456789101112131415161718192021class Solution {public: int maxArea(vector<int>& height) { int ans = 0; int left = 0, right = height.size() - 1; while (left < right) { int area = min(height[left], height[right]) * (right - left); ...
Leetcode Hot 100 | 二叉树
思想二叉树,和前面讲的回溯法或者二分查找相比,不可同日而语。二叉树不是一个方法,而是一个场景,回溯法和二分查找都是方法,因此有一套模板,而关于二叉树,或许只能概括在这个舞台上,有哪些好戏会上演,难以找到一个 silver bullet。
题目94. Binary Tree Inorder Traversal这道题是基础的二叉树中序遍历题目。
1234567891011121314class Solution {private: vector<int> result;public: vector<int> inorderTraversal(TreeNode* root) { if (!root) return {}; inorderTraversal(root->left); result.push_back(root->val); inorderTraversal(root->right); return result; ...
Leetcode Hot 100 | 二分查找
思想二分查找也是有一套模板的,可以用如下的步骤总结:
使用前提:元素在某种程度上有序;
明确下标的含义与边界;
left, right 赋值与计算中间 mid;
当决策边界合法时,进行判断;
根据条件剪枝,并得到新的边界;
边界非法,跳出循环,得到结果。
这 6 步具体怎么实施,从下面的几道题来讨论。
题目4. Median of Two Sorted Arrays先从一道 Hard 开始,它要求我们找到两个有序数组中的中位数。
123456789101112131415161718192021222324252627282930313233343536373839class Solution {public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { int m = nums1.size(), n = nums2.size(); if (m > n) { ...
Leetcode Hot 100 | 回溯法
最近在刷力扣,总结一些算法专题的思想。好记性不如烂笔头,不然全都忘记了。
思想回溯法,我认为是有一套模板的。
12345678910111213141516171819202122232425262728293031class Solution {private: vector<T> result; T path; // other attributespublic: void dfs(some input, current progress) { if (progress == end) { result.push_back(path); return; } for (auto opt : all_valid_options) { edit input; path.push_back(opt); dfs(input, new progress); ...
Docker 入门之实际应用
序在上一篇文章中,我们学会了 Docker 的原理与机制,侧重于 Docker 开发者的角度。这个文章中,我们从 Docker 使用者的角度来讨论如何让 Docker 便利软件开发与维护工作。
基本概念与逻辑这一节总结 Docker 中常见的术语,以及它们是如何关联起来,便利开发与运维工作的。
先看一个最基础的 Web 应用架构:
1234567891011121314my-app/├── docker-compose.yml├── .env├── nginx/│ └── default.conf├── backend/│ ├── Dockerfile│ ├── requirements.txt│ └── app.py└── frontend/ ├── Dockerfile ├── package.json ├── package-lock.json └── ...
这个 Web 应用涉及前端、后端、数据库以及 nginx 来进行反向代理。
注意到,在后端和前端的文件夹下,存有 Dockerfile 文件,这个文件指导我们如何构建一个 Dock ...
Docker 入门之概念理解
序为了面向就业或者读研的方向,最近决定开始学习 Docker、Kubernetes 等容器与容器编排技术。这篇文章先总结一下和 Docker 相关的概念辨析,如 Docker 和 VM,Docker 的原理,在 Windows 和 Linux 下运行 Docker 的异同等等。
为什么需要 Docker受到郝斌老师教学 C 语言的授课方式影响,在学习 Docker 之前,也需要先问一问,为什么需要使用 Docker。
就我个人的使用体会来说,我在以下这些场合遇到或者使用过 Docker:
数据库课程中,与 OceanBase DB 交互是通过 Docker 进行的,省去了配置环境的烦心事;
在 Github 上执行 Actions 时,需要用到 Docker 来创建一个干净的 runner 来完成任务;
软件工程课程中,我们的乙方采用了 Docker 构建前端、后端和数据库应用并交付给我们。
从上述用例中总结一下,Docker 为我们解决了配置环境的难题。如果需要使用某个应用或服务,但手头没有相应的支撑环境;或者需要确保开发、测试、生产环境的一致性——那就用 Docker 的容器来 ...
硕士择校
序马上到了夏令营的关口,总结一下同济水平及以上的学校,可选的学院和导师有哪些。
我现在才明白研招网的作用。出于个人目的,我对专业编号比较看重,换言之:学硕 > 专硕 > 直博。而在研招网上,找到研究生招生专业目录后,筛选 0812 和 0854 等代码,比自己一个个在学校官网中筛选名字可能偏向计算机的学院要高效得多。
和那些 211/双非保研的学生不同,同济这个层次的学校,本身就没有几所同等及以上的选择,所以筛选起来还算方便。而新兴的上海 AILab、创智学院这些因为人工智能浪潮而兴起的研究中心,我并不是很感冒。这种热点单位,就像军备竞赛,待到潮水退去再考虑吧。不过,可以了解一点招生政策。
招生目录招生目录的代码谁定的?教育部的文件不错。
目录中学科门类代码为两位阿拉伯数字,一级学科和专业学位类别代码为四位阿拉伯数字,其中代码第三位从“5”开始的为专业学位类别。
这样,区分学硕和专硕太简单了。
0854 电子信息专硕中,并不是每个二级学科我都可考虑。具体来说,能考虑的有 04、05、10、11、12。
南大南大研招办的官网给出,有如下几个计算机相关的专业。非全 ...
定期总结(2025-10)|得不到的就更加爱
序最近比较忙,总是想说一些话给一些人听,但总是找不到收听的对象。确实和一些人说过这个问题,但是总是觉得没有把话说干净,心里总有点残存的情感反反复复,尤其在不敢想得太多的夜里。
所以,还是写点东西,总结一下我最近的状态吧。
上一篇总结的链接在这里。
我觉得还真好!要不是我写过这篇文章(我甚至都忘了我写过),我是决计记不下来那么多细节的,看来还是要写一写。而且,也不用担心别人看,因为这个世界谁会这样在乎你呢?只是一些 AI 爬虫罢了。
回忆我想先从对这段感情的回忆开始,也当作回忆我人生中前二十年为数不多的情感经历吧。至于说相识啊、上头啊这种具体的细节,之前的那篇总结已经写的非常清楚了,甚至记录下了我和她都可能忘记的一些细节,真是好东西。
那么,可以回忆一下了。据那篇总结所说,我是从 24 年 10 月中旬开始注意到的她。这样算来,已经有一年之久了,真是一段纠缠不断的孽缘。(不过我还挺喜欢这种折磨的,恨毕竟比爱更长久,不管你把恨解释为遗憾还是憎恨)。
如果当时…我觉得一开始和她的聊天还挺自然的,有可能是我忘了一些事情吧,到底这种煎熬的感觉是什么。
不过一年过去了,有些事情可以确认得更清楚一点 ...
远子没吃过的书 | 春潮
远子的评价这本书远子应该没吃过,不过她确实谈过这本书的作者——屠格涅夫。她似乎说《初恋》的味道是柠檬般一样吧?记不清楚了。不过这本书可不是柠檬般的味道,如果从我的角度看,前半本书是甜甜的糖果味,不管是对初识两人的感情还是对周遭的环境描写都是如此,但后半段则像是用巨量的阿斯巴甜破坏了神经,让全身发痛,难以忍受,大概是这样吧。
小说内容这本书的时间跨度也不是很长,大概两周时间吧。
故事是以回忆开始的,讲的是五十一岁的萨宁在一堆信中发现了石榴石十字架。他不明白为什么自己在今天、此时此刻发现了他,但这勾起了他三十年前的回忆。
第一天的下午,德米特里・萨宁在德国法兰克福的一家糖果店救了埃米利的命,被一家人挽留。他在救埃米利的时候注意到了杰玛(Gem),不过后来得知她是克吕贝尔的未婚妻,有些怅惘。晚上到了糖果店进行各种各样的交流:聊天、唱歌等等,在温馨的氛围中误了去柏林的马车。没办法,只好在法兰克福多待几天。
第二天,埃米利和克吕贝尔来到萨宁下榻的白天鹅酒店拜访,克吕贝尔衣冠楚楚,并相约一家人明天到索登旅游。这段时光,还是温馨的日常。萨宁还帮忙在糖果店招待顾客,尽管收错了钱。
看样子,他愿意一辈 ...
