自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一只老风铃

今已亭亭如盖矣

  • 博客(24)
  • 资源 (2)
  • 收藏
  • 关注

原创 Leetcode multiply-string

题目描述给出两个用字符串表示的数字,将两个数字的乘积作为字符串返回。备注:数字可以无限大,且是非负数。思路:常规思路实现一个字符串S1与另一个字符串S2某一位的乘法实现两个数字字符串的加法易错点:s[i]-‘0’ 转化为数字 '0'+int 转化为字符 注意S1 与数字乘法 应该从最小位 也就是S1最后一个字符开始 并且结果需要翻转 某一位的乘法 末尾注意补齐0(在翻转之后)乘法: 注意最终的进位 //zero_num补齐0 指明哪一位数...

2020-06-29 14:16:00 136

原创 Leetcode rain-water

题目描述给出n个数字,表示一个高程图,高程图中每一条的宽度为1,请计算下雨之后这个地形可以存储多少水例如给出[0,1,0,2,1,0,1,3,2,1,2,1],返回6.思路:找到最高点 max 从0开始到max位置遍历 以left记录过程中遇到的最大值 那么对于一个A[i] 只要它小于left 那么这个位置一定可以最多灌溉 left-A[i]体积的水 (因为可以确保右侧一定不会超过max 而且左侧刚好不超过left 不会溢出) 同理右侧int trap(in...

2020-06-29 13:15:18 220

原创 Leetcode add-binary

题目描述给出两个用字符串表示的二进制数,返回他们的和(也用字符串表示)例如:a ="11"b ="1"返回"100".思路:模拟相加过程即可注意点:多次连续进位 可能最终最高位数增加技巧: s[i]-'0'转化为int类型 pre记录进位情况 string addBinary(string a, string b) { // write code here int l1=a.size(); int l2=b.siz...

2020-06-27 23:53:43 159

原创 Leetcode one_plus大数表示

题目描述给出用数字数组表示的一个非负整数,请对该整数加1。Given a non-negative number represented as an array of digits, plus one to the number.示例1输入复制[1,1] [9]输出复制[1,2] [1,0]思路:直接按照演算思路,从最低位开始,+1 若为10 则下一位继续+1 若加到最高位 则可能需要最终进一位采用do while循环 直接执行 再判断是...

2020-06-24 20:01:26 174

原创 Leetcode SqrtX

题目描述实现函数int sqrt(int x).计算并返回x的平方根思路:原题的求解方程为: 即牛顿迭代法思路:第一个解 接下来的解 int sqrt(int x) { // write code here if(x==0) return 0; if(x<=3) return 1; long r=x; wh...

2020-06-23 21:08:43 153

原创 Leetcode edit-distance

题目描述给定两个单词word1和word2,请计算将word1转换为word2至少需要多少步操作。你可以对一个单词执行以下3种操作:a)在单词中插入一个字符b)删除单词中的一个字符c)替换单词中的一个字符思路:经典的动态规划问题dp[i][j]表示word1前i个字符串 与 word2前j个字符串的 最小操作步数动态转移方程:如果最后一个字符相等 那么 dp[i][j]=dp[i-1][j-1]如果不相等 那么可能三种情况 最后一个字符替换 某边删除或添加...

2020-06-22 10:16:26 226

原创 Leetcode search-a-2D-matrix

题目描述请写出一个高效的在m*n矩阵中判断目标值是否存在的算法,矩阵具有如下特征:每一行的数字都从左到右排序每一行的第一个数字都比上一行最后一个数字大例如:对于下面的矩阵:[↵ [1, 3, 5, 7],↵ [10, 11, 16, 20],↵ [23, 30, 34, 50]↵]要搜索的目标值为3,返回true;思路:迅速找到数字可能在的那一行 然后在那一行里找 通过比较target 与每一行第一个元素注意点:停止条件 下一行第一个元素...

2020-06-21 16:30:14 237

原创 Leetcode set-matrix-zero

题目描述给定一个m*n的矩阵,如果有一个元素是0,就把该元素所在的行和列上的元素全置为0,要求使用原地算法。拓展:在常量级的空间复杂度内解决这个问题吗?思路:将第一行 第一列看作X Y轴考察剩余的元素 若为0 那么在X Y轴标记下来(对应位置 设为0)注意点:第一行 第一列 需要事先判断是否包含0 若包含 最后设定为零 void setZeroes(vector<vector<int> > &matrix) { ...

2020-06-21 00:28:03 227

原创 Leetcode 荷兰国旗问题

题目描述现在有一个包含n个物体的数组,其中物体颜色为颜色为红色、白色或蓝色,请对这个数组进行排序,让相同颜色的物体相邻,颜色的顺序为红色,白色,蓝色。我们用0,1,2分别代表颜色红,白,蓝注意:给出一个只用一步,并且能在常数级空间复杂度解决这个问题的算法吗?思路:荷兰国旗算法 即最终将序列分为三部分 小于1 等于1 大于1初始化 P_0=0表示小部分的右起点 P_2=size-1表示大部分的右起点开始从前往后遍历若该数小于1 那么A[i]与A[P_0]作交换...

2020-06-19 13:51:52 664

原创 Leetcode 最小覆盖子串

题目描述给出两个字符串S和T,要求在O(n)的时间复杂度内在S中找出最短的包含T中所有字符的子串。例如:S="ADOBECODEBANC"T="ABC"找出的最短子串为"BANC".注意:如果S中没有包含T中所有字符的子串,返回空字符串 “”;满足条件的子串可能有很多,但是题目保证满足条件的最短的子串唯一。思路:初始化left right双指针为0 map<char,int> 记录下T中每个字符所需的数目right向右移动(滑动...

2020-06-18 17:01:36 534

原创 Leetcode 排列组合

题目描述给出两个整数n和k,返回从1到n中取k个数字的所有可能的组合例如:如果n=4,k=2,结果为[↵ [2,4],↵ [3,4],↵ [2,3],↵ [1,2],↵ [1,3],↵ [1,4],↵]思路:基本的搜索题思路一:递归方式 即返回start end之间 k大小的序列返回结果与前一个元素组配即可 相当于子问题求解思路缺点:需要组配vetcor向量 带来一定的开销vector<vector<int>> fun...

2020-06-17 18:15:44 454

原创 Leetcode map搜索

题目描述给出一个二维字符数组和一个单词,判断单词是否在数组中出现,单词由相邻单元格的字母连接而成,相邻单元指的是上下左右相邻。同一单元格的字母不能多次使用。例如:给出的字符数组= ["ABCE"],↵ ["SFCS"],↵ ["ADEE"]单词="ABCCED", -> 返回 true,单词="SEE", ->返回 true,单词="ABCB", -> 返回 false.思路:经典的搜索问题初始化一个二维Visit数组 每当...

2020-06-16 22:02:29 267

原创 Leetcode 数组去重

题目描述继续思考题目"Remove Duplicates":如果数组中元素最多允许重复两次呢?例如:给出有序数组 A=[1,1,1,2,2,3],你给出的函数应该返回length =5, A 变为[1,1,2,2,3].思路: 在原先数组上做修改 那么原先数组的左边已经处理部分为最终结果序列那么对于每一个元素 只要它与末尾的两个元素不等就可以加入到最终序列由于序列有序 只要判断 A[i] 与 A[index-2] 关系即可 (类似于消消乐的思路)...

2020-06-15 23:15:27 451

原创 Leetcode 链表去重

题目描述给出一个排好序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。例如:给出的链表为1->2->3->3->4->4->5, 返回1->2->5.给出的链表为1->1->1->2->3,返回2->3.思路:初始化新建一个Pre辅助节点 遍历整条链表一个序列(若不重复) 那么加入最终链表中注意:可能多个重复的情况 1 2 2 3 3 5 可能第一个节点重复...

2020-06-14 22:25:46 492

原创 Leetcode 链表划分

题目描述给出一个链表和一个值x,以x为参照将链表划分成两部分,使所有小于x的节点都位于大于或等于x的节点之前。两个部分之内的节点之间要保持的原始相对顺序。例如:给出1->4->3->2->5->2和x= 3,返回1->2->2->4->3->5.基本思路: 创建两个辅助初始节点 small big遍历链表 分别将节点连接到 small 和 big所在链表最后结束时:较小部分最后一个节点连接到较大部分...

2020-06-13 10:52:00 356

原创 Leetcode 乱序字符串

题目描述题目给出一个字符串s1,我们可以用递归的方法将字符串分成两个非空的子串来将s1表示成一个二叉树下面是s1=“great”的一种二叉树的表现形式: great↵ / ↵ gr eat↵ / / ↵g r e at↵ / ↵ a t将字符串乱序的方法是:选择任意的非叶子节点,交换它的两个孩子节点。例如:如果我们选择节点“gr”交换他的两个孩子节点,就会产生一个乱序字符串"rgeat"思路.

2020-06-12 12:19:31 425

原创 Leetcode 链表的部分倒插逆置

题目描述将一个链表m位置到n位置之间的区间反转,要求使用原地算法,并且在一次扫描之内完成反转。例如:给出的链表为1->2->3->4->5->NULL,m= 2 ,n= 4,返回1->4->3->2->5->NULL.注意:给出的m,n满足以下条件:1 ≤m≤n≤ 链表长度基本思路:创建一个初始的辅助节点通过pre_start start定位到相应的位置然后从start往后的一个节点开始...

2020-06-10 12:42:59 535

原创 Leetcode 子集生成

题目描述给出一个可能包含重复元素的整数集合S,返回该整数集合的所有子集。注意:你给出的子集中的元素要按非递增的顺序排列 给出的解集中不能包含重复的子集例如:如果S=[1,2,2], 给出的解集应该是:[↵ [2],↵ [1],↵ [1,2,2],↵ [2,2],↵ [1,2],↵ []↵]基本思路:首先对集合进行排序 然后初始化一个空集合那么生成过程如下对于当前的集合 从该元素后面中挑选不重复元素加入当前集合 组成新的子...

2020-06-09 11:27:36 268

原创 Leetcode BST树的构建

题目描述给定一个值n,请生成所有的存储值1...n.的二叉搜索树(BST)的结构例如:给定n=3,你的程序应该给出下面五种不同的二叉搜索树(BST)基本思路:考虑根节点可能为1到N 那么剩下的左右两部分划归为两个子问题那么一个基本问题即是 给定连续区间(low , high)的BST树的生成采用递归函数 vector<TreeNode*> trees(low,high)完成相关逻辑注意点:当其中一部分不存在(例如以1作为根节点) 那么左边部分应当返回一个N...

2020-06-08 13:23:44 358

原创 Leetcode 字符串交叉匹配

题目描述给出三个字符串s1,s2,s3,判断s3是否可以由s1和s2交织而成。例如:给定s1="aabcc",s2="dbbca",如果s3="aadbbcbcac", 返回true如果s3="aadbbbaccc", 返回false思路:动态规划 考察S3最后一个字符,若与S1最后一个字符匹配 那么可以转化为子问题 S3[L-1] 与S1[L1-1] 和S2 若与S2最后一个字符匹配 那么可以转化为子问题 S3[L-1] 与S2[L2-1...

2020-06-06 11:05:21 279

原创 Leetcode BST树找错

题目描述二叉搜索树(BST)中的两个节点被错误地交换了,请在不改变树的结构的情况下恢复这棵树。备注;用O(n)的空间解决这个问题的方法太暴力了,你能设计一个常数级空间复杂度的算法么?思路:由于二叉搜索树中序遍历总是递增序列 那么采用中序遍历方式如图所示,包含两种交换第一相邻的交换 那么其中序遍历结果包含一组相邻逆序对 另外一种是不相邻的交换,那么其中序遍历结果包含两组相邻逆序对求解思路是寻找到相邻逆序对的第一个元素first 和最后一个元素second ...

2020-06-05 13:02:37 253

原创 Leetcode 判断二叉树对称

题目描述给定一棵二叉树,判断琪是否是自身的镜像(即:是否对称)例如:下面这棵二叉树是对称的 1↵ / ↵ 2 2↵ / / ↵3 4 4 3↵下面这棵二叉树不对称。 1↵ / ↵ 2 2↵ ↵ 3 3思路:核心递归函数check(Node* p1,Node* p2) 判断p1->left p2->right 以及 p1->right p2->left bo...

2020-06-04 09:56:03 508

原创 Leetcode 重构二叉树

题目描述给出一棵树的中序遍历和后序遍历,请构造这颗二叉树注意:保证给出的树中不存在重复的节点思路:后序遍历的最后一个元素是root根据这个在中序遍历中可以划分左右子树的中序序列并根据长度划分后序遍历的左右子树序列子问题递归继续递归实现即可 TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) { // write code here..

2020-06-02 11:10:18 211

原创 Leetcode 二叉树反向层次遍历

题目描述给定一个二叉树,返回该二叉树由底层到顶层的层序遍历,(从左向右,从叶子节点到根节点,一层一层的遍历)例如:给定的二叉树是{3,9,20,#,#,15,7}, 3↵ / ↵ 9 20↵ / ↵ 15 7该二叉树由底层到顶层层序遍历的结果是[↵ [15,7]↵ [9,20],↵ [3],↵]思路:采用队列层次遍历 再反向输出 vector<vector<int> > levelOrde...

2020-06-01 17:23:45 1096

计算机图形学-Bezier与Bspline曲线,曲面

MIT计算机图形学作业 C++实现,Bezier曲线,Bspline曲线

2018-01-05

正则式到最小化DFA

实现了从正则式子到NFA,NFA到DFA,并最小化DFA的过程,

2018-01-05

空空如也

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

TA关注的人

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