![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
两天宇宙人
摸鱼大学僧
展开
-
打家劫舍
class Solution {public: int rob(vector<int>& nums) { if(!nums.size()) return 0; vector<int> v(nums.size()); for(int i = 0; i < v.size(); ++i...原创 2019-10-23 17:29:48 · 107 阅读 · 0 评论 -
爬楼梯
典型的动态规划题目:具有:最优子结构和无后效性。class Solution {public: int climbStairs(int n) { if(n == 1 || n == 2) return n; vector<int> v(n + 1, 0); v[1] = 1; v[2] = 2; ...原创 2019-10-21 10:58:22 · 137 阅读 · 0 评论 -
完全平方数
????Leetcode题目链接第一种方法:BFS 对于这个题目我的第一个想法就是BFS,将数值像洋葱一样一层一层的向外延展,每一层count+1,当出现队列中有等于n的值时,返回count即可。但是直接这样做要超出时间要求,于是加了一个unordered_set来记录已经放入过队列的值,避免重复,最后勉强过关。class Solution {public: void a(vect...原创 2019-10-17 13:41:05 · 234 阅读 · 0 评论 -
二叉树的遍历
二叉树的遍历二叉树的遍历分为以下几种: - 层次遍历 - 前序遍历 - 中序遍历 - 后序遍历其中分为两类:层次遍历单作为一类,其他三种方式为另外一类。 先总结前中后序这三种方法,如果有朋友恰好看到我的文章来找思路,我建议先别看代码的实现,人看了别人的代码自然而然地会有先入为主的感觉,说的不好听一点,叫背别人的代码,这是下意识地行为,所以还是一开始先别看为好。不知道我...原创 2019-08-04 22:03:07 · 133 阅读 · 0 评论 -
从前序与中序遍历序列构造二叉树
从前序与中序遍历序列构造二叉树 进入来看我这篇文章的小伙伴应该大都是遇见了leetcode中的105. 从前序与中序遍历序列构造二叉树或是106. 从中序与后序遍历序列构造二叉树,其实这两个题是明显的同意思路,如果一个题目没有思路,可以看看别人的解答,然后把另外一个当作练习,这也是极好的。原理讲解 这两个题目的思路其实是和之前遍历二叉树的思路是一样的:分而治之。 在这样一...原创 2019-08-05 00:53:18 · 402 阅读 · 0 评论 -
填充每个节点的下一个右侧节点指针
填充每个节点的下一个右侧节点指针116. 填充每个节点的下一个右侧节点指针和117. 填充每个节点的下一个右侧节点指针 II这两个题目唯一的区别在于是否是完美二叉树。 这个题目的思路完全来源于层次遍历,如果掌握了层次遍历,这两个题目的答案都是一样的。源代码:/*// Definition for a Node.class Node {public: int va...原创 2019-08-05 02:04:16 · 144 阅读 · 0 评论 -
归并排序
概述 归并排序的特点在于它的时间复杂度为O(nlogn)。而根据一个结论性的东西来说:最坏情况下比较方式的排序算法至少需要Ω(nlogn)的时间(结论来自邓俊辉版数据结构P59),这是比较性排序算法的极限。计算时间复杂度 (函数代码在下面)不难看出merge函数的时间复杂度是O(n),sort函数的时间复杂度主要来源于merge函数和两个自身的递归函数,于是:T(n) = 2 ...原创 2019-08-13 17:59:47 · 133 阅读 · 0 评论 -
栈混洗
这里使用的是O(n)的算法:思路:再来一次栈混洗,看能不能实现序列B中的效果。(设A为输入栈,B为要验证的栈)先将要验证的栈B转移到栈rb,这样B的栈底就位于rb的栈顶了,让我们可以知道依次放入栈B的元素是哪些。模拟混洗的过程,如果rb栈顶与s中一样,那么就将rb和s都pop。如果s为空,则表示能实现栈B这样一个结果。#pragma once#include <stack&...原创 2019-08-23 17:48:53 · 1033 阅读 · 0 评论