leetcode练习
糖琴心
这个作者很懒,什么都没留下…
展开
-
leetcode 560. 和为K的子数组-two sum变形
题目思路这题一开始思考的是之前的数的划分,划分为2个子集和为k。然后就去复习了一下dp里面的背包问题。因为背包问题就是解决subsetsum的。然后再看了一下,是连续的,那么可能不是背包问题,因为subsetsum是可以隔开的。继续思考,如果使用暴力法,那么就类似于最大回文子串,我照着写了一下,发现复杂度接近On3.并且在写的过程中,反应过来可以用前缀和presum。但是使用了前缀和后,结果仍然为On2的复杂度,仍然很高。继续观察发现,在求前缀和过程中,每次求出当前前缀和,想要求区间[i,j]的原创 2020-05-15 09:20:23 · 264 阅读 · 0 评论 -
regex:正则匹配
字符串分割getline(sstream,string,‘ch’);相当于python的split方法#include<iostream>#include<vector>#include<string>#include<sstream>using namespace std;int main() { vector<string> strs; stringstream ss("134,45,56"); string s; s原创 2020-05-13 19:46:53 · 325 阅读 · 0 评论 -
leetcode 38. 外观数列 遍历末尾元素的特殊处理
总结总体是模拟的思路,需要特殊处理进入判断时候j==0的情况。另外还要特殊处理结尾j == size-1的情况。 这两种特殊情况的处理,分别用if写在开始和结尾,开始的使用continue,结尾的直接进行特判。整体逻辑比较清晰,最大的减少对中间代码的干扰。代码class Solution {public: string countAndSay(int n) { v...原创 2020-04-16 16:34:39 · 261 阅读 · 0 评论 -
leetcode 22. 括号生成
dfsclass Solution {public: void dfs(string cur,int leftnum,int rightnum,int n,vector<string>& ans){ if(leftnum>n||rightnum>n)return; if(leftnum<rightnum)retur...原创 2020-04-16 12:09:53 · 146 阅读 · 0 评论 -
leetcode 72 编辑距离:另一种dp table的查找方式
思路定义dp[i][j]为word1的前i个字符和word2的前j个字符相同需要的最少操作也就是说在递归的时候是从后面往前面递归的。为什么会这么想首先,转移方程是好写的。但是实现的过程是需要细节的。首先是basecase。经过了股票问题的思考后。在这里,当i<0或者j<0的情况,很容易返回另一个的对应情况。这个没什么好说的。关键是构建一个能够查找结果的表。我的创新这里使用...原创 2020-04-15 12:51:59 · 267 阅读 · 0 评论 -
leetcode10+leetcode 44 正则匹配题型总结
正则匹配题型总结这两道题目其实都是属于匹配类型的题目,都有一个‘*’表示可以任意匹配多个字符,而都有一个’.‘表示可以匹配单个字符。比较好想的递归思路:递归思路主要有2种,一种是从前向后匹配,一种是从后往前匹配。多数时候两种都可以,我这里主要用的是从前向后匹配,所以我定义的dp[i][j]为s的第i个字符之后和p的第j个字符之后可以互相匹配上的概率。这样的话逻辑就比较清晰了,初始化dp[i...原创 2020-04-06 21:53:03 · 201 阅读 · 0 评论 -
leetcode 108 递归-二分 有序数组转换为二叉搜索树
leetcode 108/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} ...原创 2020-03-12 23:35:56 · 136 阅读 · 0 评论 -
dijkstra+dfs PAT A1030
dijkstra+dfsdfs(v)表示以v为输入的终点进行搜索到s#include<iostream>#include<vector>using namespace std;const int MAXV = 1005;const int INF = 1e9;int G[MAXV][MAXV];//graphint costGraph[MAXV][MAXV]...原创 2020-03-12 16:11:00 · 144 阅读 · 0 评论 -
leetcode113
路径综合2/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; *...原创 2020-03-08 22:52:55 · 145 阅读 · 0 评论 -
重建二叉树
前序+中序leetcode105/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) ...原创 2020-03-08 15:20:47 · 145 阅读 · 0 评论 -
二叉树非递归遍历
总结框架大体相同,不同在于访问就是将数值加到vector res中。另外,访问的时机在退栈之前和退栈之后,栈的作用就是把迭代的路线记录下来。前序遍历class Solution {public: vector<int> res; vector<int> preorderTraversal(TreeNode* root) { stac...原创 2020-03-08 09:35:01 · 125 阅读 · 0 评论 -
leetcode5:最长回文序列
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-palindromic-substring...原创 2019-10-16 11:14:31 · 136 阅读 · 0 评论 -
二分查找练习——leetcode 34. 在排序数组中查找元素的第一个和最后一个位置
leetcode 34. 在排序数组中查找元素的第一个和最后一个位置给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例...原创 2019-10-03 14:58:05 · 717 阅读 · 0 评论 -
动态规划入门2:leetcode518. 零钱兑换 II
leetcode518. 零钱兑换 II给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。示例 1:输入: amount = 5, coins = [1, 2, 5]输出: 4解释: 有四种方式可以凑成总金额:5=55=2+2+15=2+1+1+15=1+1+1+1+1来源:力扣(LeetCode)链接:https://l...原创 2019-09-13 19:56:28 · 347 阅读 · 0 评论 -
leetcode练习:145. 二叉树的后序遍历
给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3]12/3输出: [3,2,1]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。后序遍历二叉树的后序遍历有个很奇怪的...原创 2019-09-10 10:49:06 · 298 阅读 · 0 评论 -
二叉树递归遍历的体会
二叉树的递归遍历非常简单,其基本模型如下前序遍历前序遍历非常适用于由上往下进行访问的情景,比如求根节点到某一个结点沿途的权重和,那么用前序遍历是很好的。既可以带着一个变量进行遍历(利用引用或者外部变量),也可以通过设置返回值,然后最后进行综合,从而达到统一的结果。当然也可以在访问完,遍历完左右子树后,再根据结果来进行重新调整。(如第三个例子)有时候为了记录上一个结点的信息对下一个结点的影响,...原创 2019-09-09 15:59:07 · 1538 阅读 · 1 评论 -
leetcode热题精选:98. 验证二叉搜索树
98. 验证二叉搜索树给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入:2/ 1 3输出: true示例 2:输入:5/ 1 4/ 3 6输出: false解释: 输入为: [5,1,4...原创 2019-09-09 08:50:55 · 92 阅读 · 0 评论 -
leetcode热题精选:437. 路径总和 III
路径总和 III给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。示例:root = [10,5,-3,3,2,null,11,3,-2,null,1], sum...原创 2019-09-08 14:14:41 · 108 阅读 · 0 评论 -
leetcode热题精选:101. 对称二叉树
给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。1/ 2 2/ \ / 3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:1/ 2 2\ 3 3来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/symmet...原创 2019-09-08 10:25:51 · 106 阅读 · 0 评论