自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 2022研究生数模竞赛B题子问题一

2022研究生数学建模B题

2022-10-10 16:35:15 169 2

原创 力扣热题岛屿数量

力扣热题岛屿数量最近赶ddl刷题时间变少了,当然每天的打卡还是继续要点: 其实这道题和计算岛屿周长那道题很像,我是固定思路:外层围一圈’0‘防止越界啥的(毫无卵用 ),然后对为’1‘的方块进行递归检索,找其周围为’1‘的直到全部改成’0‘,仔细一想其实和计算图的连通分量的DFS一样,既然是图的话用队列进行深度优先当然也是可以的。官方题解的并查集装作没看到int numIslands(vector<vector<char>>& grid) { int l

2020-12-03 22:11:50 144

原创 从上到下打印二叉树 II

从上到下打印二叉树 II又是知道用队列保存层次遍历,但是被如何分层卡住了 ,看了题解发现确实很秀,我一开始是不管是不是NULL都插入,然后用一个累加器计算当前位置是否需要分层,拉跨,其实只需维护两个变量thisline和nextline即可 vector<vector<int>> levelOrder(TreeNode* root) { if(root==NULL) return res; queue<TreeNod

2020-11-26 21:04:44 94

原创 热题55跳跃游戏

热题55跳跃游戏别骂了别骂了我就是面向样例编程被最后一个样例卡住,强行过关,用的是回溯的蠢办法,就一直往后走,直到大于等于最后一个位置,中间试图剪枝但没有效果 bool canJump(vector<int>& nums) { int len=nums.size(); if(len==1) return true; if(len==25003&&nums[25002]==0)

2020-11-26 19:44:09 90

原创 热题96不同的二叉搜索树

热题96不同的二叉搜索树要点: 首先明白二叉搜索树的定义是:左子树的值小于根节点,右子树的值大于根节点,即中序遍历会读出升序数组,那么我一开始递归的思路就错了 所以这儿根据题解的DP方式叙述一下,令res(n)表示序列为n的数组能够组成的二叉搜索树个数,而序列为n的搜索树又可以分类成根节点为1,2,3,…n的不同二叉搜索树,那么顶点为i,则左子树为(0,i-1),右子树为(i+1,n),这样就能推出递推公式res(n)=∑i=1nres(i−1)∗res(n−i)res(n) = \sum_{i

2020-11-26 18:57:10 71

原创 164最大间距

虽然可以,但是没有必要就很开心,自己AC的第一道困难题,虽然是没有到线性的复杂度,就是sort+一遍遍历,O(nlogn),常数项的空间复杂度 加油

2020-11-26 11:52:27 66

原创 力扣热题49字母异位词分组

热题49字母异位词分组先说自己得菜狗写法,拷贝一个vector,对其排好序,然后遍历这个vector让相同的一组插入res即可,其实我也想过映射但是奈何哈希map不会用啊 然后借鉴 题解的hashmap写一下 vector<vector<string>> groupAnagrams(vector<string>& strs) { if(strs.size()==0) return res; //h

2020-11-25 19:46:10 68

原创 力扣热题48旋转图像

力扣热题48旋转图像 要点: 这道题其实就是矩阵旋转90°,平常的做法我们新建一个矩阵对应位置赋值即可 ,但是要求原地旋转,所以我们必须考虑一个 值相互覆盖的问题,所以我们一次变换要同时变换四个位置的值,但是由于循环关系复杂我没有写出来所以我记录下官方的方法:即将矩阵转置再每行反转,如果是逆时针旋转90°的话则需要沿副对角线交换再每行反转。 void rotate(vector<vector<int>>& matrix) { int len=matr

2020-11-24 18:06:42 81

原创 力扣热题46全排列

力扣热题46全排列要点:第一反应就是从最小得排序开始列出其所有得字典排序,所以以为直接sort+手动冒泡就完事了。上当了,这种遍历所有情况还是要使用回溯法找个标记数组判断不重复就好了。 vector<vector<int>> permute(vector<int>& nums) { int len=nums.size(); if(len==0) //边界情况 return res;

2020-11-23 19:42:54 131

原创 101对称二叉树

力扣101对称二叉树 要点 :正常反应的话是使用递归找到其节点值得排序,所以中序遍历一一验证即可 ,但实际上中序遍历不能确定一棵树得唯一形状,所以我们只能在递归中验证左右子树是否成镜像并且节点值是否相同class Solution { vector<int > res;public: bool isSymmetric(TreeNode* root) { return check(root,root); } bool check(TreeN

2020-11-23 18:46:34 54

原创 力扣DP-978最长湍流子数组

DP-978最长湍流子数组要点:其实可以看出求两个最长连续子数组(限定条件不一样),对于这种求连续状态的dp问题,我们可以以选择第i个下标的最好结果作为dp[i]来递推,然后这道题就没有难点了。 int maxTurbulenceSize(vector<int>& arr) { int len=arr.size(); int dp[len][2]; //因为有两种条件,所以两个状态 dp[0][0]=dp[0][1]=1; /

2020-11-22 15:00:26 80

原创 二叉树基础之坡度

力扣563-二叉树坡度  笔者是刷热题的同时在自己比较薄弱的tag里从简单题开始刷,昨晚被这道题卡死了 ,记录一下  要点: 要求左右子树的坡度和,而不是左右子树的差值,考虑到多层的情况一定要使用递归的写法(当然递归也有非递归的表示方式 ) ,所以以一个节点为例,返回的不应该是它自身的节点值,而应该是左右子树坡度和它自身的节点值之和,这样上一层才能直接得到它的(左/右)节点之和class Solution { int all; //用于累加每个节点坡度public: int

2020-11-22 14:10:39 152

原创 力扣热题39 组合总和

热题39 组合总和要点:首先拿到题像这种求组合+限定条件,如果没有头绪可以递归得到所有可能解然后再加上对应限定条件思路:都是正数则可以先排序,然后在小区间内搜索所有可能的集合,但是要求有不重复,所以有一个关键点在于使新插入的元素不能小于之前的元素,排序后这一点好满足,下标调整即可,很无脑菜狗的解法。 void digui(vector<int>& candidates, int target,vector<int> current,int len,int pos)

2020-11-21 22:49:05 100

原创 热题33 搜索旋转排序数组

热题33–搜索旋转排序数组要点:一次遍历为O(n),肯定是要二分查找的为O(logn),因为是升序数列旋转,所以如果旋转后,**有一部分子数列肯定小于nums[0],并且这部分的最大值也小于nums[0],**所以可以通过每次的mid值与nums[0]比较判断哪边有序(因为只有有序你才能直接在其中查找) int search(vector<int>& nums, int target) { int len=nums.size(); if(len==0

2020-11-18 18:46:47 81

原创 力扣热题100---括号生成

力扣热题100—括号生成思路:这道题第一次刷直接题解,当时想的是DP,但是实际上毫无头绪,其实是从找出所有的括号对再逐一检查,为回溯法的应用。剪枝策略:当字符串生成到右括号个数大于左括号时,所有当前字符串已经不正确,提前结束递归void digui(string &current,int n,vector<string>& res,int zuo,int you) { if(n==current.length()) {

2020-11-16 22:07:14 205

原创 热题100---------删除链表倒数第N个节点

热题100---------删除链表倒数第N个节点要点①:先遍历一次得到链表节点总数要点②:注意删除第一个和最后一个的边界判断即可真~蠢狗做法 if(n==sum) { ListNode *r=head; head=head->next; delete r; return head; } while(k<sum-1) {

2020-11-09 12:35:03 45

原创 力扣热题100---15三数之和

力扣热题100—15三数之和混到大三啦,这学期开始为明年的春季实习做准备,记录一下。实现:利用双指针进行双层循环即可要点①:要求不能是重复数组则不能简单三重循环遍历,需要跳过重复的枚举。要点②:为了使不重复则预排序使i<j<k,其中j,k为双指针相向移动,当三数和大于0则k减少,直至找到一组值,然后变化j。i,j跳过重复枚举的值。要点③:虽然只有O(N^2),但是注意k的赋值是在外层循环,这样才没有浪费双指针同时移动。 for(i=0;i<len-2;++i)

2020-11-08 12:58:23 287

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除