![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
刷题练习
nullwh
这个作者很懒,什么都没留下…
展开
-
蒟蒻的LeetCode刷题记录101~110
101. 对称二叉树/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: bool isSymmetric(Tre原创 2020-10-15 22:18:30 · 384 阅读 · 1 评论 -
蒟蒻的LeetCode刷题记录91~100
91. 解码方法class Solution {public: int numDecodings(string s) { int n = s.size(); s = ' ' + s;//为了方便,让下标从1开始,所以加上一个空格 vector<int> f(n + 1); f[0] = 1;//0个数字是的解码方案算作1 for (int i = 1; i <= n; i ++ ) {原创 2020-10-14 11:51:18 · 282 阅读 · 0 评论 -
蒟蒻的LeetCode刷题记录81~90
81. 搜索旋转排序数组 II和第33题类似的思路,依旧是二分,但是即便是二分,时间复杂度依旧是O(n)O(n)O(n),所以不如直接线性扫描一遍,具体的题解。class Solution {public: bool search(vector<int>& nums, int target) { for (auto& x : nums) { if (x == target) return true; }原创 2020-10-13 21:23:18 · 158 阅读 · 0 评论 -
蒟蒻的LeetCode刷题记录71~80
71. 简化路径原创 2020-10-12 18:14:28 · 127 阅读 · 0 评论 -
蒟蒻的LeetCode刷题记录61~70
61. 旋转链表/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* rotateRight(ListNode* head, int k) { if (原创 2020-10-11 22:47:34 · 95 阅读 · 0 评论 -
蒟蒻的LeetCode刷题记录51~60
51. N 皇后很经典的dfs:原创 2020-10-10 21:26:54 · 160 阅读 · 5 评论 -
蒟蒻的LeetCode刷题记录41~50
41. 缺失的第一个正数将数组所有的数放入哈希表,随后从 1 开始依次枚举正整数,并判断其是否在哈希表中;但是这样的做法不符合题目的空间要求:class Solution {public: int firstMissingPositive(vector<int>& nums) { unordered_set<int> hash; for (auto x : nums) hash.insert(x); int res原创 2020-10-09 22:49:04 · 125 阅读 · 0 评论 -
蒟蒻的LeetCode刷题记录31~40
31. 下一个排列本题考查的其实是next_permutation这个库函数。原创 2020-10-08 20:41:07 · 186 阅读 · 0 评论 -
蒟蒻的LeetCode刷题记录21~30
21. 合并两个有序链表跟之前剑指的题是一样的,直接归并。/** * 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, ListN原创 2020-10-07 18:06:54 · 106 阅读 · 0 评论 -
蒟蒻的LeetCode刷题记录11~20
11. 盛最多水的容器class Solution {public: int maxArea(vector<int>& height) { int res = 0; for (int i = 0, j = height.size() - 1; i < j; ) { res = max(res, min(height[i], height[j]) * (j - i)); if (height原创 2020-10-06 15:20:17 · 140 阅读 · 0 评论 -
蒟蒻的LeetCode刷题记录1~10
1.两数之和class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int, int> hash; for (int i = 0; i < nums.size(); i++) { if (hash.count(target - nums[i])) return {ha原创 2020-10-05 22:54:33 · 189 阅读 · 0 评论 -
Acwing算法基础课学习笔记(十八)--贪心之排序不等式&&绝对值不等式&&推公式
排队打水#include <iostream>#include <algorithm>using namespace std;const int N = 100010;int n;int t[N];int main(){ scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", &t[i]); sort(t, t + n);原创 2020-10-04 21:23:29 · 376 阅读 · 0 评论 -
Acwing算法基础课学习笔记(十七)--贪心之区间问题&&Huffman树
区间选点将每个区间按照右端点从小到大进行排序从前往后枚举区间,end值初始化为无穷小如果本次区间不能覆盖掉上次区间的右端点, ed < range[i].l说明需要选择一个新的点, res ++ ; ed = range[i].r;如果本次区间可以覆盖掉上次区间的右端点,则进行下一轮循环证明证明ans <= cnt :cnt 是一种可行方案, ans是可行方案的最优解,也就是最小值。证明ans >= cnt : cnt可行方案是一个区间集合,区原创 2020-10-04 13:23:27 · 213 阅读 · 0 评论 -
Acwing算法基础课学习笔记(十六)--动态规划之计数类DP&&数位统计DP&&状态压缩DP&&树形DP&&记忆化搜索
整数划分将其转换为完全背包问题:朴素做法://f[i][j] = f[i - 1][j] + f[i][j - i]#include <iostream>using namespace std;const int N = 1e3 + 7, mod = 1e9 + 7;int f[N][N];int main() { int n; cin >> n; for (int i = 0; i <= n; i ++) {原创 2020-10-02 15:29:26 · 364 阅读 · 0 评论 -
Acwing算法基础课学习笔记(十五)--动态规划之线性DP&&区间DP
数字三角形原创 2020-09-30 15:40:37 · 258 阅读 · 0 评论 -
Acwing算法基础课学习笔记(十四)--动态规划之背包问题
终于来到了动态规划问题。原创 2020-09-26 23:06:06 · 300 阅读 · 0 评论 -
剑指offer67~76题
滑动窗口的最大值原创 2020-09-25 16:34:12 · 172 阅读 · 0 评论 -
剑指offer56~66题
0到n-1中缺失的数字原创 2020-09-24 22:46:45 · 108 阅读 · 0 评论 -
剑指offer45~55题
数字序列中某一位的数字原创 2020-09-23 22:53:54 · 91 阅读 · 0 评论 -
剑指offer34~44题
二叉搜索树的后序遍历序列此题的重点是考察后序遍历的操作,左右根,也就是将最后一个节点作为分割元素,将分割为左子树、右子树和根节点,再递归判断左右子树是否满足后序遍历的特性,不满足则返回false。递归出口有两个,一个是当序列的左侧位置大于等于右侧位置是返回true,解释下此处为什么会存在大于的情况,以左子树为例,可能会存在某一点没有左子树,而我们对左子树的区间判断是s到l-1,此处的l就是s。每次递归都会干掉最后一个元素。class Solution {public: vector<i.原创 2020-09-22 22:40:03 · 77 阅读 · 0 评论 -
剑指offer23~33题
反转链表非常直观的动图展示/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* reverseList(ListNode* head) { List原创 2020-09-21 17:07:21 · 88 阅读 · 0 评论 -
剑指offer12~22题
机器人的运动范围class Solution {public: //计算单个数字的各位之和 int get_single_sum(int x) { int s = 0; while (x) { s += x %10; x /= 10; } return s; } //计算点的各位之和 int get_sum(pair<int, int> p)原创 2020-09-20 20:19:38 · 223 阅读 · 0 评论 -
剑指offer 1~11题
连续子数组的最大和class Solution {public: int maxSubArray(vector<int>& nums) { int res = INT_MIN; int last = 0; for(int i = 0; i < nums.size(); i++) { last = nums[i] + max(last,0); res = max(res, la原创 2020-09-18 12:38:13 · 130 阅读 · 0 评论 -
Acwing算法基础课学习笔记(九)--搜索与图论之Prim&&Kruskal&&染色法判定二分图&&匈牙利算法
图论的最后一节,主要讲最小生成树和二分图。常考的是最小生成树,二分图偶尔也会考到。Prim算法求最小生成树最小生成树一般都会用在无向图问题上。/*S:当前已经在联通块中的所有点的集合1. dist[i] = inf2. for n 次 t<-S外离S最近的点 利用t更新S外点到S的距离 st[t] = truen次迭代之后所有点都已加入到S中联系:Dijkstra算法是更新到起始点的距离,Prim是更新到集合S的距离*/#include <iostr原创 2020-09-14 11:28:40 · 181 阅读 · 0 评论 -
Acwing算法基础课学习笔记(八)--搜索与图论之最短路问题-Dijkstra&&bellman-ford&&spfa&&Floyd
最短路问题是一个比较大的问题,我们将花一节课的时间来介绍:原创 2020-09-13 20:08:07 · 230 阅读 · 0 评论 -
Acwing算法基础课学习笔记(七)--搜索与图论之DFS&&BFS&&树与图的深度优先遍历&&树与图的广度优先遍历&&拓扑排序
来到第三章的内容,搜索与图论。排列数字#include<iostream>using namespace std;int n; //需要搜索的个数const int N = 10;int path[N]; //path[]用于保存路径bool st[N]; //用于记录 该步是否已经走过,true则表示被用过void dfs(int u){ if (u == n) //一条路搜索完成 { for (in原创 2020-09-10 21:47:07 · 230 阅读 · 0 评论 -
Acwing算法基础课学习笔记(六)--数据结构之Hash表&&STL简介
来到数据结构章节的最后一节课,主要内容是哈希表和STL。模拟散列表首先要理解什么是哈希。其实之前的课讲过的离散化就是一种特殊的哈希方式,这里介绍的是一般的哈希方式。算法题中对哈希的操作一般只有添加和查找;删除一般不会涉及,非要进行删除操作的话,也不是真的删除,而是用一个bool变量进行标记即可。...原创 2020-09-09 21:23:40 · 263 阅读 · 0 评论 -
Acwing算法基础课学习笔记(五)--数据结构之Tire&&并查集&&&堆
Trie字符串统计#include <iostream>using namespace std;const int N = 100010;int son[N][26], cnt[N], idx;//下标是0的点,既是根节点,又是空节点char str[N];void insert(char str[]){ int p = 0;//从根结点开始遍历 for (int i = 0; str[i]; i++) { int u = str[i] - 'a'; if (原创 2020-09-08 23:17:07 · 253 阅读 · 0 评论 -
Acwing算法基础课学习笔记(四)--数据结构之单链表&&双链表&&模拟栈&&模拟队列&&单调栈&&单调队列&&KMP
单链表算法题中最常考的单链表就是邻接表(用来存储图和数),比如最短路问题,最小生成树问题,最大流问题。双链表用于优化某些问题。利用数组来表达单链表:存储值和指针的两个数组利用下标进行关联。需要注意的是,head不是节点,只是指向某个节点的指针。head存的是链表第一个点的下标,形象地看就好像是指向了头结点。这里贴一个非常有趣的题解#include <iostream>using namespace std;const int N = 100010;int n;int h原创 2020-09-08 14:48:42 · 214 阅读 · 1 评论 -
Acwing算法基础课学习笔记(三)--基础算法之双指针算法 && 位运算 &&离散化 &&区间合并
最长连续不重复子序列双指针算法的核心在于优化,通常把O(n2)O(n^2)O(n2)优化成了O(n)O(n)O(n)。而且之前的快排和归并其实也用了双指针的思想。根据观察发现,当使用i,j两个快慢指针表示当前的指针移动到i的最长不重复序列时候,具有单调性,即i向后移动,j必然向右或者不动,不可能向左移动,这一单调性质导致可以使用双指针算法。在双指针算法中,一个指针扫描整个数组而移动,关键如何找到对应的另一个指针移动的位置,在本题中,我们定义i为块指针,j为慢指针,j的位置定义为i对应的最长不重复序列原创 2020-09-04 16:58:36 · 212 阅读 · 0 评论 -
Acwing算法基础课学习笔记(二)--基础算法之高精度 && 前缀和差分
高精度加法原创 2020-09-03 19:31:03 · 183 阅读 · 0 评论 -
Acwing算法基础课学习笔记(一)--基础算法之排序&&二分
快速排序快速排序最大的坑就在于边界值的处理,y总给的这个板子还是很牛逼的!#include <iostream>using namespace std;const int N = 1e6+10;int n;int arr[N];void quickSort(int arr[], int l,int r){ if(l >= r) return; int x = arr[(l + r + 1)/2], i = l - 1, j = r + 1;原创 2020-09-02 16:45:45 · 326 阅读 · 0 评论 -
华为机试在线训练C++版(31~40)
31.【中级】单词倒排原创 2020-04-24 15:19:58 · 404 阅读 · 0 评论 -
华为机试在线训练C++版(21~30)
21.简单密码原创 2020-04-22 20:35:57 · 397 阅读 · 0 评论 -
华为机试在线训练C++版(11~20)
11.数字颠倒方法一:直接利用C++库函数,先将数字转换成字符串,然后再颠倒过来即可,朴实无华的思想2333#include <iostream>#include <algorithm>#include <string>using namespace std;int main() { int input; cin >> ...原创 2020-04-14 18:04:20 · 417 阅读 · 0 评论 -
华为机试在线训练C++版(1~10)
牛客网的华为笔试面试机考在线练习,写个刷题笔记记录一下,方便以后的查看。刷题地址点击这里。1.字符串最后一个单词长度。正规的做法:利用动态数组:输入的字符串依次存入数组中,最后返回数组中最后一个元素(字符串)的长度。#include <iostream>#include <string>#include <vector>using namesp...原创 2020-04-09 18:28:20 · 641 阅读 · 0 评论 -
剑指offer 刷题记录(61~67题)
终于到了最后的7题!原创 2020-02-18 21:27:02 · 107 阅读 · 0 评论 -
剑指offer 刷题记录(51~60题)
废话不多说,直接开始!51.原创 2020-02-16 17:47:12 · 92 阅读 · 0 评论 -
剑指offer 刷题记录(41~50题)
因为各种各样的事情,刷题耽搁了一段时间。现在新冠肺炎疫情严重,还不能回学校,正好趁着机会把剩下的题都刷完吧!同时也希望疫情早日结束!41.小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现...原创 2020-02-14 19:02:35 · 134 阅读 · 0 评论 -
剑指offer 刷题记录(31~40题)
前些天一直忙着论文投稿和开题报告。刷题都怠慢了,现在赶紧补上!废话不多说,直接开始!31.原创 2019-12-30 17:35:36 · 141 阅读 · 0 评论