思维
文章平均质量分 59
思维
yc_cy1999
一只喜欢cc和想去南大的小羊
展开
-
LeetCode 第 224 场周赛 5655. Largest Submatrix With Rearrangements【动态规划】⭐⭐⭐⭐⭐
文章目录题目描述知识点我的实现码前思考代码实现时空复杂度分析码后反思参考文档题目描述知识点动态规划我的实现码前思考这道题目的motivation跟LeetCode 85非常像,是它的一个简化版。在LeetCode 85中,我们利用分解问题的方法,提出最大子矩阵一定是以某一行为底的思想对问题进行分解(这是代码的第一层循环)。在LeetCode 85中,我们需要使用到单调栈,但是在这道题目中,由于列是可以移动的,所以我们直接“贪心”地对高度进行排序,这样就能够保证充分利用列可移动的条件得到.原创 2021-01-19 09:16:58 · 304 阅读 · 0 评论 -
剑指 Offer 05. 替换空格【STL操作+原地操作】
文章目录题目描述知识点结果实现码前思考代码实现码后反思题目描述知识点字符串string STL操作结果实现码前思考本来是想暴力求解的,但是记得C++ STL里面有现成的函数,所以还是决定用现成的函数来解题;代码实现class Solution {public: string replaceSpace(string s) { int pos = 0; int srclen = 1; int dstlen = 3; .原创 2021-01-06 19:32:07 · 121 阅读 · 0 评论 -
LeetCode 48. Rotate Image【原地算法+矩阵转置+反转矩阵】⭐⭐⭐⭐⭐
文章目录题目描述知识点结果实现码前思考代码实现码后反思题目描述知识点数组操作结果实现码前思考这道题我实现的实在是太蠢了,虽然是双百的结果,但是却用了我很长时间,我并不打算使用这种方法来写题解。。。按照LeetCode题解的说法,应该先将矩阵转置,再将反转列向量。矩阵转置 是(i,j)与(j,i)之间交换,因此可以实现原地;反转列向量 这个我一开始没有想到怎么原地,后来看题解才发现,就是原地反转一维数组那种思想,第一列与最后一列置换,第二列与倒数第二列置换!代码实现clas.原创 2020-07-22 16:17:07 · 131 阅读 · 0 评论 -
LeetCode 437. Path Sum III【前缀和 / 双重DFS】⭐⭐⭐⭐⭐
文章目录题目描述知识点我的傻逼解法结果思路代码双重DFS解法结果思路代码前缀和解法结果思路代码反思题目描述知识点树、DFS、前缀和我的傻逼解法结果思路使用vector返回所有的子路径…啊,我这个方法未免太蠢了吧,我好笨。代码//我能想到的只有返回 当前结点的所有路径和vectorclass Solution {public: int cnt=0; int target; int pathSum(TreeNode* root, int sum) {.原创 2020-08-01 20:32:41 · 209 阅读 · 0 评论 -
⭐⭐⭐⭐⭐【前缀和+哈希优化】LeetCode 560. Subarray Sum Equals K
文章目录一、什么是前缀和二、优化解法三、解题结果代码实现码后反思今天来聊一道简单却十分巧妙的算法问题:算出一共有几个和为 k 的子数组。那我把所有子数组都穷举出来,算它们的和,看看谁的和等于 k 不就行了。关键是,如何快速得到某个子数组的和呢,比如说给你一个数组 nums,让你实现一个接口 sum(i, j),这个接口要返回 nums[i..j] 的和,而且会被多次调用,你怎么实现这个接口呢?因为接口要被多次调用,显然不能每次都去遍历 nums[i..j],有没有一种快速的方法在 O(1)时间.原创 2020-08-01 15:56:49 · 255 阅读 · 0 评论 -
LeetCode 240. Search a 2D Matrix II【二分/分治/思维】⭐⭐⭐⭐⭐
文章目录题目描述知识点解法一——二分结果码前思考代码实现解法二——思维⭐⭐⭐⭐⭐(重要!!!)结果码前思考代码实现码后反思参考文档题目描述矩阵的每行从左到右是升序,每列从上到下也是升序,在矩阵中查找某个数。知识点二分、分支、思维解法一——二分结果码前思考看到有序,第一反应就是二分查找。最直接的做法,一行一行的进行二分查找即可。此外,结合有序的性质,一些情况可以提前结束:比如某一行的第一个元素大于了 target ,当前行和后边的所有行都不用考虑了,直接返回 false。.原创 2020-07-26 22:54:17 · 115 阅读 · 0 评论 -
⭐【思维+划分情况】PAT A1073 Scientific Notation
文章目录题目描述实现码前思考代码实现码后反思题目描述题目给出科学计数法的格式的数字A,要求输出普通数字表示法的A,并保证所有有效位都被保留,包括末尾的0。实现码前思考这道题目我用了很长的时间,这里主要还是分情况解析问题为主,将情形拆分为exp是大于0,小于0,还是等于0;代码实现#include <cstdio>#include <iostream>#include <string>using namespace std;string in.原创 2020-05-30 19:30:06 · 107 阅读 · 0 评论 -
【排序+思维】PAT A1085 Perfect Sequence
文章目录题目描述知识点实现码前思考代码实现码后反思题目描述题目大意:给定一个正整数数列,和正整数p,设这个数列中的最大值是M,最小值是m,如果M <= m * p,则称这个数列是完美数列。现在给定参数p和一些正整数,请你从中选择尽可能多的数构成一个完美数列。输入第一行给出两个正整数N(输入正数的个数)和p(给定的参数),第二行给出N个正整数。在一行中输出最多可以选择多少个数可以用它们组成一个完美数列知识点排序实现码前思考需要从小到大排序,然后也是从小到大去匹配,每次i的匹配都是从i.原创 2020-05-25 22:14:44 · 95 阅读 · 0 评论 -
PAT A1093 Count PAT & A1097 Deduplication on a Linked List
文章目录题目描述知识点实现码前思考代码实现码后反思题目描述知识点实现码前思考代码实现码后反思题目描述知识点思维实现码前思考看到数据集的大小是10510^5105,那么基本可以确认,不能使用O(N2)O(N^2)O(N2)的算法,那么又要遍历每一个字母,所以必然是大于等于O(N)O(N)O(N)的算法;如果采用O(N)O(N)O(N)的算法,意味着不能在i时,查看0...i-1的每个数,那么就要使用空间换时间的思想;根据题目的含义,动手模拟一下,就知道可以使用 计数 的思想实现;代.原创 2020-05-18 23:35:05 · 84 阅读 · 0 评论 -
PAT A1101 Quick Sort
文章目录题目描述知识点实现码前思考代码实现码后反思题目描述知识点排序、思维实现码前思考首先,肯定不能每次都进行排序,肯定会超时!!!所以需要寻找线性时间复杂度的方法;首先,从左到右进行遍历,同时记录下每个数左边的最大值,判断其是否比它大;其次,从右到左进行遍历,同时记录下每个数右边的最小值,判断其是否比它小;满足上述两种情况的数就是pivot代码实现//不存在相同数字 //从左到右表示 //从右到左来一遍 #include "bits/stdc++.h"using n.原创 2020-05-11 17:25:53 · 103 阅读 · 0 评论 -
⭐⭐⭐⭐⭐PAT A1148 Werewolf - Simple Version
文章目录题目描述知识点实现码前思考代码码后反思题目描述1148 Werewolf - Simple Version (20分)知识点思维实现码前思考这道题目我没有写出来,谁tm能够想到这是一道暴力题呢?!好吧,这个数据最大是100,O(N3)O(N^3)O(N3)的话就是10610^6106,没有超出1s的限制,不知道会不会超出400ms的限制;居然是暴力,下面是柳神的解答:关键就是要先自己假设好谁是狼人,谁是人,然后他们说的话,看其中说谎的有多少个。。。代码//数组下标从.原创 2020-05-09 17:48:36 · 117 阅读 · 0 评论 -
PAT A1144 The Missing Number
文章目录题目描述知识点实现码前思考代码实现码后反思题目描述知识点STL使用,思维实现码前思考感觉不能用sort(),会超时吧;使用set进行记录出现即可代码实现#include "bits/stdc++.h"using namespace std;unordered_set<int> st;int n;int main(){ scanf("%d...原创 2020-05-08 17:16:46 · 91 阅读 · 0 评论 -
PAT A1117 Eddington Number【思维】⭐⭐⭐⭐⭐
文章目录题目描述知识点实现码前思考代码实现码后思考题目描述知识点思维题实现码前思考注意E表示的是存在E天使得这E天中每天的骑行量都大于E即可,因此骑行量大于E的天数可以是多于E的。(理解一下)我们先对数组从小到大排序;然后从最大的值开始枚举E的大小,从1开始;因为是存在E,所以我们只要保证当前最大的前E个数大于E就可以了,因为只要它们满足就一定满足,它们不满足那么一定不会...原创 2020-04-30 19:40:14 · 106 阅读 · 0 评论 -
LeetCode 31. 下一个排列【数组+思维】⭐⭐⭐⭐⭐
文章目录题目描述知识点结果实现码前思考代码实现码后反思参考文档题目描述知识点数组,思维题结果实现码前思考其实这道题目跟全排列的思想是差不多的,只不过更加难思考清楚一些,从非全排列的角度出发,可能会更好理解一些!所以我是从非全排列的角度出发思考的;我们希望下一个数比当前数大,这样才满足“下一个排列”的定义。因此只需要将后面的「大数」与前面的「小数」交换,就能得到一个更大的数...原创 2020-04-24 21:18:00 · 137 阅读 · 0 评论 -
⭐数组玩的6吗?
文章目录题目描述知识点实现码前思考代码实现码后反思题目描述知识点思维实现码前思考求一个数组的所有子数组的和,可以通过前缀和的减法得到! 这样的时间复杂度为 O(n2)O(n^2)O(n2) ,不必要枚举所有子数组然后再一一求和,那样的时间复杂度为 O(n3)O(n^3)O(n3) 了!一个子数组是有左右边界的,这道题目得使用 枚举右边界 的方法来解题,即统计以当前数字为有边界...原创 2020-04-12 10:44:50 · 86 阅读 · 0 评论