<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[UnendingGlory]]></title><description><![CDATA[Do strive, do not complain.]]></description><link>https://blog.youkuaiyun.com/include_not_found_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; include_not_found_]]></copyright><item><title><![CDATA[641 设计循环双端队列]]></title><link>https://blog.youkuaiyun.com/include_not_found_/article/details/105335721</link><guid>https://blog.youkuaiyun.com/include_not_found_/article/details/105335721</guid><author>include_not_found_</author><pubDate>Sun, 05 Apr 2020 23:01:10 +0800</pubDate><description><![CDATA[双向循环链表模拟deque
#include &lt;bits/stdc++.h&gt;

// 双向循环链表模拟
struct node
{
    int val;
    struct node *pre, *next;
    node(int _val){val = _val;};
};

class MyCircularDeque {
    int size, cur_size;
 ...]]></description><category></category></item><item><title><![CDATA[46 全排列]]></title><link>https://blog.youkuaiyun.com/include_not_found_/article/details/105334539</link><guid>https://blog.youkuaiyun.com/include_not_found_/article/details/105334539</guid><author>include_not_found_</author><pubDate>Sun, 05 Apr 2020 21:56:34 +0800</pubDate><description><![CDATA[经典解法，递归 + 标记访问数组
// 经典解法
class Solution {
    int n;
    unordered_map&lt;int, bool&gt; vis;
    vector&lt;int&gt; p;
    vector&lt;vector&lt;int&gt;&gt; ans;
public:

    // 递归生成，分解成子问题
    void gene...]]></description><category></category></item><item><title><![CDATA[8 字符串转整数aoti]]></title><link>https://blog.youkuaiyun.com/include_not_found_/article/details/105290032</link><guid>https://blog.youkuaiyun.com/include_not_found_/article/details/105290032</guid><author>include_not_found_</author><pubDate>Fri, 03 Apr 2020 12:13:07 +0800</pubDate><description><![CDATA[注意"+42"返回值是42
// 注意"+42"返回值是42
class Solution {
public:
    int myAtoi(string str) {
        long long ans = 0;
        int i = 0, sign = 1;
        // 先清空字符串前缀空格
        while(str[i] == ' ') ++i;
   ...]]></description><category></category></item><item><title><![CDATA[289 生命游戏]]></title><link>https://blog.youkuaiyun.com/include_not_found_/article/details/105267176</link><guid>https://blog.youkuaiyun.com/include_not_found_/article/details/105267176</guid><author>include_not_found_</author><pubDate>Thu, 02 Apr 2020 12:39:11 +0800</pubDate><description><![CDATA[简单题，开两个二维数组或使用复合状态
class Solution {
public:
    // -1之前是活细胞现在是死细胞，0死细胞，1活细胞，2之前是死细胞现在是活细胞
    void gameOfLife(vector&lt;vector&lt;int&gt;&gt;&amp; board) {
        int dx[8] = {1, 0, -1, 0, 1, -1, 1, ...]]></description><category></category></item><item><title><![CDATA[1111 有效括号的嵌套深度]]></title><link>https://blog.youkuaiyun.com/include_not_found_/article/details/105241885</link><guid>https://blog.youkuaiyun.com/include_not_found_/article/details/105241885</guid><author>include_not_found_</author><pubDate>Wed, 01 Apr 2020 11:29:53 +0800</pubDate><description><![CDATA[用栈来计算深度，但是此题中输入已经保证了括号一定是匹配的，所以不需要真的用栈
直观解法1：每次操作使得A集合和B集合的深度相差最小
class Solution {
public:
    // 使得两组字符串的深度相差最小
    vector&lt;int&gt; maxDepthAfterSplit(string seq) {
        vector&lt;int&gt; ans;
 ...]]></description><category></category></item><item><title><![CDATA[面试题 17.12 BiNode]]></title><link>https://blog.youkuaiyun.com/include_not_found_/article/details/105222607</link><guid>https://blog.youkuaiyun.com/include_not_found_/article/details/105222607</guid><author>include_not_found_</author><pubDate>Tue, 31 Mar 2020 14:48:39 +0800</pubDate><description><![CDATA[思路：中序遍历并修改指针
递归版本
class Solution {
    TreeNode* pre;
public:
    // 递归遍历处理，中序遍历的同时将pre的右指针指向自己即可
    void inOrder(TreeNode *root) // pre的值要传给上一层，所以用引用或者全局
    {
        if(root == nullptr) return;
  ...]]></description><category></category></item><item><title><![CDATA[1382 将二叉搜索树变平衡]]></title><link>https://blog.youkuaiyun.com/include_not_found_/article/details/105183832</link><guid>https://blog.youkuaiyun.com/include_not_found_/article/details/105183832</guid><author>include_not_found_</author><pubDate>Sun, 29 Mar 2020 18:55:46 +0800</pubDate><description><![CDATA[先中序遍历得到序列，再二分建树，必定是平衡二叉树
class Solution {
    vector&lt;int&gt; in;
public:

    void inOrder(TreeNode* root)
    {
        if(root == nullptr) return;
        inOrder(root-&gt;left);
        in.push_...]]></description><category></category></item><item><title><![CDATA[820 单词的压缩编码]]></title><link>https://blog.youkuaiyun.com/include_not_found_/article/details/105160511</link><guid>https://blog.youkuaiyun.com/include_not_found_/article/details/105160511</guid><author>include_not_found_</author><pubDate>Sat, 28 Mar 2020 14:12:23 +0800</pubDate><description><![CDATA[灵活使用字典树数据结构。
即寻找所有不是其他单词后缀的单词
使用前缀树，先将单词倒转，然后建树，最后遍历之即可

// 节点
class Trie
{
    bool is_end;
    string word;
    Trie *next[26];
public:
    Trie()
    {
        is_end = false;
        for(int i = 0...]]></description><category></category></item><item><title><![CDATA[315 计算右侧小于当前元素的个数]]></title><link>https://blog.youkuaiyun.com/include_not_found_/article/details/105041081</link><guid>https://blog.youkuaiyun.com/include_not_found_/article/details/105041081</guid><author>include_not_found_</author><pubDate>Mon, 23 Mar 2020 09:05:02 +0800</pubDate><description><![CDATA[使用计数法，维护一个cnt计数数组，从右往左遍历原数组
对于nums中的每个元素i，出现一次，则++cnt[i]
由于要求右边比其小的元素个数，所以即求cnt[i - 1] + cnt[i - 2] + …
这两个问题刚好对应 307题 的 update 和 sumRange操作，可以用树状数组解决（代码中不需要存cnt数组）
与307题不同的是，此题需要将nums中的元素作为树状数组的下标，由于...]]></description><category></category></item><item><title><![CDATA[307 区域和检索]]></title><link>https://blog.youkuaiyun.com/include_not_found_/article/details/105015353</link><guid>https://blog.youkuaiyun.com/include_not_found_/article/details/105015353</guid><author>include_not_found_</author><pubDate>Sat, 21 Mar 2020 19:14:31 +0800</pubDate><description><![CDATA[四种方法。
方法1：
直接暴力，sumRange o(n)，update为o(1)，如果k次操作均是求和，则时间复杂度为o(kn)，难以承受
class NumArray {
    vector&lt;int&gt; v;
public:
    NumArray(vector&lt;int&gt;&amp; nums) {
        for(int i :nums) v.push_bac...]]></description><category></category></item><item><title><![CDATA[212 单词搜索II]]></title><link>https://blog.youkuaiyun.com/include_not_found_/article/details/104995003</link><guid>https://blog.youkuaiyun.com/include_not_found_/article/details/104995003</guid><author>include_not_found_</author><pubDate>Fri, 20 Mar 2020 17:37:00 +0800</pubDate><description><![CDATA[思路：
先将单词插入到前缀树中，然后再DFS一步步去判断下一个要遍历的字符是否存在前缀树中，若存在，则加入中间变量中，若当前遍历的字符序列在字典树中组成一个单词，则加入ans中
不存在，则停止该方向的搜索，因为前缀不存在，则后面DFS生成的单词均以此为前缀，均不存在
在DFS时使用一个set来保存存在于前缀树中的单词，因为遍历时可能会有重复的单词加入，注意DFS时对于vis数组和中间变量的重置。
...]]></description><category></category></item><item><title><![CDATA[211 添加与搜索单词]]></title><link>https://blog.youkuaiyun.com/include_not_found_/article/details/104990902</link><guid>https://blog.youkuaiyun.com/include_not_found_/article/details/104990902</guid><author>include_not_found_</author><pubDate>Fri, 20 Mar 2020 15:17:35 +0800</pubDate><description><![CDATA[思路：前缀树，注意输入正则字符串的时候对’ . '的处理。
class Trie
{
public:
    bool is_end;
    Trie *next[26];
    Trie()
    {
        is_end = false;
        for(int i = 0; i &lt; 26; ++i) next[i] = nullptr;
    }

    vo...]]></description><category></category></item><item><title><![CDATA[面试题40 最小的k个数]]></title><link>https://blog.youkuaiyun.com/include_not_found_/article/details/104985408</link><guid>https://blog.youkuaiyun.com/include_not_found_/article/details/104985408</guid><author>include_not_found_</author><pubDate>Fri, 20 Mar 2020 11:01:50 +0800</pubDate><description><![CDATA[与 703 数据流中第k个大元素思路类似

https://blog.youkuaiyun.com/include_not_found_/article/details/104858263

class Solution {
    // 堆排序，维护一个大顶堆
public:
    vector&lt;int&gt; getLeastNumbers(vector&lt;int&gt;&amp; arr, ...]]></description><category></category></item><item><title><![CDATA[208 实现Trie前缀树]]></title><link>https://blog.youkuaiyun.com/include_not_found_/article/details/104983649</link><guid>https://blog.youkuaiyun.com/include_not_found_/article/details/104983649</guid><author>include_not_found_</author><pubDate>Fri, 20 Mar 2020 10:29:07 +0800</pubDate><description><![CDATA[字典树，用于统计，排序和保存大量的字符串，利用字符串的公共前缀来减少查询时间，查询效率比哈希树高。
示例：

联想此图，很容易写出插入，查找，查找是否存在前缀等函数
class Trie {
    bool is_end; // 当前是否是一个单词的结尾
    Trie *next[26]; // 该节点往下
public:
    /** Initialize your data struc...]]></description><category></category></item><item><title><![CDATA[207 课程表]]></title><link>https://blog.youkuaiyun.com/include_not_found_/article/details/104976826</link><guid>https://blog.youkuaiyun.com/include_not_found_/article/details/104976826</guid><author>include_not_found_</author><pubDate>Thu, 19 Mar 2020 21:13:01 +0800</pubDate><description><![CDATA[简单的队列 + 拓扑排序
class Solution {
public:
    bool canFinish(int numCourses, vector&lt;vector&lt;int&gt;&gt;&amp; prerequisites) {
        int c[numCourses], cnt = 0;
        vector&lt;vector&lt;int&gt;&g...]]></description><category></category></item><item><title><![CDATA[232 用栈实现队列]]></title><link>https://blog.youkuaiyun.com/include_not_found_/article/details/104975873</link><guid>https://blog.youkuaiyun.com/include_not_found_/article/details/104975873</guid><author>include_not_found_</author><pubDate>Thu, 19 Mar 2020 20:34:12 +0800</pubDate><description><![CDATA[栈模拟队列，入队时利用辅助栈将入队元素放在栈底
class MyQueue {
    stack&lt;int&gt; s1;
public:
    /** Initialize your data structure here. */
    MyQueue() {
    }
    
    /** Push element x to the back of queue. */
    ...]]></description><category></category></item><item><title><![CDATA[1042 不邻接植花]]></title><link>https://blog.youkuaiyun.com/include_not_found_/article/details/104972567</link><guid>https://blog.youkuaiyun.com/include_not_found_/article/details/104972567</guid><author>include_not_found_</author><pubDate>Thu, 19 Mar 2020 17:41:10 +0800</pubDate><description><![CDATA[一开始理解错题意。。写了个并查集没过
只是简单的考察图的数据结构==
class Solution {
public:
    vector&lt;int&gt; gardenNoAdj(int N, vector&lt;vector&lt;int&gt;&gt;&amp; paths) {
        vector&lt;vector&lt;int&gt;&gt; g(N + 1);
   ...]]></description><category></category></item><item><title><![CDATA[997 找到小镇法官]]></title><link>https://blog.youkuaiyun.com/include_not_found_/article/details/104970718</link><guid>https://blog.youkuaiyun.com/include_not_found_/article/details/104970718</guid><author>include_not_found_</author><pubDate>Thu, 19 Mar 2020 16:37:58 +0800</pubDate><description><![CDATA[目标点入度 == N - 1，出度 = 0
class Solution {
public:
    int findJudge(int N, vector&lt;vector&lt;int&gt;&gt;&amp; trust) {
        int indegree[N + 1], outdegree[N + 1];
        memset(indegree, 0, sizeof(...]]></description><category></category></item><item><title><![CDATA[409 最长回文串]]></title><link>https://blog.youkuaiyun.com/include_not_found_/article/details/104963653</link><guid>https://blog.youkuaiyun.com/include_not_found_/article/details/104963653</guid><author>include_not_found_</author><pubDate>Thu, 19 Mar 2020 11:32:39 +0800</pubDate><description><![CDATA[思路：

偶数次数的字符才能完美对称
奇数次数的要么没有，有则去除对子后必然只剩一个在中间
统计奇数次数的字符个数即可

class Solution {
public:
    int longestPalindrome(string s) {
        int cnt[26][2]; // 0: Upper , 1: lower
        memset(cnt, 0, sizeof...]]></description><category></category></item><item><title><![CDATA[1361 验证二叉树]]></title><link>https://blog.youkuaiyun.com/include_not_found_/article/details/104956841</link><guid>https://blog.youkuaiyun.com/include_not_found_/article/details/104956841</guid><author>include_not_found_</author><pubDate>Wed, 18 Mar 2020 23:17:34 +0800</pubDate><description><![CDATA[只根据入度判断是典型的错误算法（完美踩坑！！气死了），有向图中可能存在环或者非联通
正确思路：

先用DFS / BFS / 并查集判断是否是联通图
再通过边数和入度来判断即可，满足边数 = n - 1的连通图一定不存在环，一定是树

class Solution {
public:
    void DFS(int x, vector&lt;int&gt;&amp; leftChild, vec...]]></description><category></category></item></channel></rss>