05 2022 档案
摘要:搜索与图论 深度优先搜索 想象对一棵树进行搜索,深搜会尽可能往深了搜索,不撞南墙不回头,在回溯的时候会搜索该节点其他可能的路径。深搜使用的数据结构一般是栈Stack,于是一般用递归实现,使用的空间是$O(h)$,路径不具有最短性。 DFS最重要的两个部分:回溯和剪枝。用DFS做题时,首先要搞清楚用什
阅读全文
摘要:数据结构 单链表 通常链表的实现方式 struct Node { int val; Node *next; }; 用结构体加指针实现单链表效率不高,因为每次添加一个节点,需要new一个 Node(),这个操作非常慢。 数组模拟单链表 用数组实现单链表,数组e[N]用来存储值val,数组 ne[N]
阅读全文
摘要:STL常用技巧 Vector vector(变长数组),倍增的思想,支持比较运算(按字典序) 定义方式 vector<int> a; // 定义:一个vector数组a vector<int> a(10); // 定义:一个长度为10的vector数组a vector<int> a(10,3); /
阅读全文
摘要:基础算法 快速排序 思路 第一步:确定分界点,对于给定的无序数组,先界定一个中点值pivot。(注意:该值不一定是下标为中点的值,可以是任何数,一般来说取第一个、最后一个或者中间值)然后利用双指针i和j,左边一个右边一个同时往里走。 第二步:划分区间,对于左指针i,每走一步判断该下标的值是不是大于p
阅读全文
摘要:Hot 100(11~20) 11.有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 辅助栈 对于判断这种左右匹配,可以考虑用栈和哈希表来辅助。 思路
阅读全文
摘要:Hot 100(1~10) 1.两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。
阅读全文
摘要:Hot 100(31~40) 31.颜色分类 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库的sort函数的情况下解决这个问题。
阅读全文

浙公网安备 33010602011771号