<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ShellDawn的博客]]></title><description><![CDATA[Gu-Ah]]></description><link>https://blog.youkuaiyun.com/ShellDawn</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ShellDawn]]></copyright><item><title><![CDATA[No.293 - LeetCode[790] Domino and Tromino Tiling - 经典dp]]></title><link>https://blog.youkuaiyun.com/ShellDawn/article/details/120354394</link><guid>https://blog.youkuaiyun.com/ShellDawn/article/details/120354394</guid><author>ShellDawn</author><pubDate>Fri, 17 Sep 2021 18:17:19 +0800</pubDate><description><![CDATA[/*
 * @lc app=leetcode id=790 lang=cpp
 *
 * [790] Domino and Tromino Tiling
 */

// @lc code=start
class Solution {
public:
    int numTilings(int n) {
        const int mod = 1000000007;
        vector&lt;vector&lt;long long&gt;&gt; dp(3, vector&lt;long ]]></description><category></category></item><item><title><![CDATA[No.292 - LeetCode[852] Peak Index in a Mountain Array - 二分山峰数组]]></title><link>https://blog.youkuaiyun.com/ShellDawn/article/details/120354015</link><guid>https://blog.youkuaiyun.com/ShellDawn/article/details/120354015</guid><author>ShellDawn</author><pubDate>Fri, 17 Sep 2021 17:51:47 +0800</pubDate><description><![CDATA[/*
 * @lc app=leetcode id=852 lang=cpp
 *
 * [852] Peak Index in a Mountain Array
 */

// @lc code=start
class Solution {
public:
    void bsearch(int L, int R, vector&lt;int&gt;&amp; arr, int&amp; loc, int&amp; mx){
        if(L+1 &gt;= R){
            if]]></description><category></category></item><item><title><![CDATA[No.291 - LeetCode[932] Beautiful Array - 构造题]]></title><link>https://blog.youkuaiyun.com/ShellDawn/article/details/120346108</link><guid>https://blog.youkuaiyun.com/ShellDawn/article/details/120346108</guid><author>ShellDawn</author><pubDate>Fri, 17 Sep 2021 11:39:40 +0800</pubDate><description><![CDATA[/*
 * @lc app=leetcode id=932 lang=cpp
 *
 * [932] Beautiful Array
 */

// @lc code=start
class Solution {
public:
    vector&lt;int&gt; beautifulArray(int n) {
        vector&lt;int&gt; ans = {1};
        while(ans.size() &lt; n) {
            vector&lt;i]]></description><category></category></item><item><title><![CDATA[No.290 - LeetCode[870] Advantage Shuffle - 优先队列贪心]]></title><link>https://blog.youkuaiyun.com/ShellDawn/article/details/120332547</link><guid>https://blog.youkuaiyun.com/ShellDawn/article/details/120332547</guid><author>ShellDawn</author><pubDate>Thu, 16 Sep 2021 16:45:36 +0800</pubDate><description><![CDATA[/*
 * @lc app=leetcode id=870 lang=cpp
 *
 * [870] Advantage Shuffle
 */

// @lc code=start
class Solution {
public:
    vector&lt;int&gt; advantageCount(vector&lt;int&gt;&amp; nums1, vector&lt;int&gt;&amp; nums2) {
        priority_queue&lt;pair&lt;int,in]]></description><category></category></item><item><title><![CDATA[No.289 - LeetCode[901] Online Stock Span - 单调栈]]></title><link>https://blog.youkuaiyun.com/ShellDawn/article/details/120329746</link><guid>https://blog.youkuaiyun.com/ShellDawn/article/details/120329746</guid><author>ShellDawn</author><pubDate>Thu, 16 Sep 2021 15:18:24 +0800</pubDate><description><![CDATA[单调栈模拟就行。
/*
 * @lc app=leetcode id=901 lang=cpp
 *
 * [901] Online Stock Span
 */

// @lc code=start
class StockSpanner {
public:
    stack&lt;pair&lt;int,int&gt;&gt; s;
    int cnt;
    StockSpanner() {
        cnt = 0;
    }
    
    int next(int price) ]]></description><category></category></item><item><title><![CDATA[No.288 - LeetCode[950] Reveal Cards In Increasing Order - 双端队列构造]]></title><link>https://blog.youkuaiyun.com/ShellDawn/article/details/120308648</link><guid>https://blog.youkuaiyun.com/ShellDawn/article/details/120308648</guid><author>ShellDawn</author><pubDate>Wed, 15 Sep 2021 14:55:23 +0800</pubDate><description><![CDATA[逆向模拟构造题
使用双端队列数据结构。
/*
 * @lc app=leetcode id=950 lang=cpp
 *
 * [950] Reveal Cards In Increasing Order
 */

// @lc code=start
class Solution {
public:
    vector&lt;int&gt; deckRevealedIncreasing(vector&lt;int&gt;&amp; deck) {
        int N = deck.size();]]></description><category></category></item><item><title><![CDATA[No.282 - LeetCode[1009] Complement of Base 10 Integer -位运算]]></title><link>https://blog.youkuaiyun.com/ShellDawn/article/details/120253323</link><guid>https://blog.youkuaiyun.com/ShellDawn/article/details/120253323</guid><author>ShellDawn</author><pubDate>Wed, 15 Sep 2021 11:29:31 +0800</pubDate><description><![CDATA[/*
 * @lc app=leetcode id=1009 lang=cpp
 *
 * [1009] Complement of Base 10 Integer
 */

// @lc code=start
class Solution {
public:
    int bitwiseComplement(int n) {
        if(n == 0) return 1;
        int ans = 0;
        int mask = 0;
        while(n &g]]></description><category></category></item><item><title><![CDATA[No.287 - LeetCode[958] Check Completeness of a Binary Tree - BFS]]></title><link>https://blog.youkuaiyun.com/ShellDawn/article/details/120290023</link><guid>https://blog.youkuaiyun.com/ShellDawn/article/details/120290023</guid><author>ShellDawn</author><pubDate>Tue, 14 Sep 2021 16:10:32 +0800</pubDate><description><![CDATA[/*
 * @lc app=leetcode id=958 lang=cpp
 *
 * [958] Check Completeness of a Binary Tree
 */

// @lc code=start
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : ]]></description><category></category></item><item><title><![CDATA[No.286 - LeetCode[978] Longest Turbulent Subarray - 简单动态规划]]></title><link>https://blog.youkuaiyun.com/ShellDawn/article/details/120289559</link><guid>https://blog.youkuaiyun.com/ShellDawn/article/details/120289559</guid><author>ShellDawn</author><pubDate>Tue, 14 Sep 2021 15:55:29 +0800</pubDate><description><![CDATA[/*
 * @lc app=leetcode id=978 lang=cpp
 *
 * [978] Longest Turbulent Subarray
 */

// @lc code=start
class Solution {
public:
    int maxTurbulenceSize(vector&lt;int&gt;&amp; arr) {
        int N = arr.size();
        if(N&lt;=1){
            return N;
   ]]></description><category></category></item><item><title><![CDATA[No.285 - LeetCode[982] Triples with Bitwise AND Equal To Zero - 哈希降维]]></title><link>https://blog.youkuaiyun.com/ShellDawn/article/details/120288598</link><guid>https://blog.youkuaiyun.com/ShellDawn/article/details/120288598</guid><author>ShellDawn</author><pubDate>Tue, 14 Sep 2021 15:25:34 +0800</pubDate><description><![CDATA[/*
 * @lc app=leetcode id=982 lang=cpp
 *
 * [982] Triples with Bitwise AND Equal To Zero
 */

// @lc code=start
class Solution {
public:
    int countTriplets(vector&lt;int&gt;&amp; nums) {
        unordered_map&lt;int, int&gt; mp;
        int N = nums.si]]></description><category></category></item><item><title><![CDATA[No.284 - LeetCode[987] Vertical Order Traversal of a Binary Tree - DFS]]></title><link>https://blog.youkuaiyun.com/ShellDawn/article/details/120272262</link><guid>https://blog.youkuaiyun.com/ShellDawn/article/details/120272262</guid><author>ShellDawn</author><pubDate>Mon, 13 Sep 2021 17:56:25 +0800</pubDate><description><![CDATA[c++的set，multiset，map遍历是有序的。
/*
 * @lc app=leetcode id=987 lang=cpp
 *
 * [987] Vertical Order Traversal of a Binary Tree
 */

// @lc code=start
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     Tre]]></description><category></category></item><item><title><![CDATA[No.283 - LeetCode[991] Broken Calculator - 数学题]]></title><link>https://blog.youkuaiyun.com/ShellDawn/article/details/120270355</link><guid>https://blog.youkuaiyun.com/ShellDawn/article/details/120270355</guid><author>ShellDawn</author><pubDate>Mon, 13 Sep 2021 16:49:45 +0800</pubDate><description><![CDATA[没有想出好的搜索方案。
这是一道数学题，根据题目可以写成如下公式：
2^a * x - (2^b + 2^c + ....) = y

所以，从y往x去算，更直接。
/*
 * @lc app=leetcode id=991 lang=cpp
 *
 * [991] Broken Calculator
 */

// @lc code=start
class Solution {
public:
    int brokenCalc(int startValue, int target) {
       ]]></description><category></category></item><item><title><![CDATA[No.281 - LeetCode[1013] Partition Array Into Three Parts With Equal Sum - 三子串和相等]]></title><link>https://blog.youkuaiyun.com/ShellDawn/article/details/120253062</link><guid>https://blog.youkuaiyun.com/ShellDawn/article/details/120253062</guid><author>ShellDawn</author><pubDate>Sun, 12 Sep 2021 17:21:36 +0800</pubDate><description><![CDATA[这题有个坑，就是如果采用L-&gt;R 单向统计和为sum/3的子串时会存在：
A，B，C，D，E 5个子串和都为sum/3，看似是false，但是通过重新切分，可以变为
AB1, B2CD1, D2E 来组合成三个子串和为sum/3，见case71.
/*
 * @lc app=leetcode id=1013 lang=cpp
 *
 * [1013] Partition Array Into Three Parts With Equal Sum
 */

// @lc code=start
class]]></description><category></category></item><item><title><![CDATA[No.280 - LeetCode[1019] Next Greater Node In Linked List - 单调栈]]></title><link>https://blog.youkuaiyun.com/ShellDawn/article/details/120252766</link><guid>https://blog.youkuaiyun.com/ShellDawn/article/details/120252766</guid><author>ShellDawn</author><pubDate>Sun, 12 Sep 2021 17:02:15 +0800</pubDate><description><![CDATA[/*
 * @lc app=leetcode id=1019 lang=cpp
 *
 * [1019] Next Greater Node In Linked List
 */

// @lc code=start
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
]]></description><category></category></item><item><title><![CDATA[No.279 - LeetCode[1020] Number of Enclaves - 经典DFS]]></title><link>https://blog.youkuaiyun.com/ShellDawn/article/details/120251386</link><guid>https://blog.youkuaiyun.com/ShellDawn/article/details/120251386</guid><author>ShellDawn</author><pubDate>Sun, 12 Sep 2021 15:40:56 +0800</pubDate><description><![CDATA[/*
 * @lc app=leetcode id=1020 lang=cpp
 *
 * [1020] Number of Enclaves
 */

// @lc code=start
const int dirx[] = {0, 1, 0, -1};
const int diry[] = {-1, 0, 1, 0};

class Solution {
public:
    void dfs(int i, int j, vector&lt;vector&lt;int&gt;&gt;&amp; G, ]]></description><category></category></item><item><title><![CDATA[No.278 - LeetCode[1031] Maximum Sum of Two Non-Overlapping Subarrays - 前缀和]]></title><link>https://blog.youkuaiyun.com/ShellDawn/article/details/120250834</link><guid>https://blog.youkuaiyun.com/ShellDawn/article/details/120250834</guid><author>ShellDawn</author><pubDate>Sun, 12 Sep 2021 15:06:14 +0800</pubDate><description><![CDATA[思路如下代码，可以进一步内存优化，取消dp数组，直接用sum即可。
/*
 * @lc app=leetcode id=1031 lang=cpp
 *
 * [1031] Maximum Sum of Two Non-Overlapping Subarrays
 */

// @lc code=start
class Solution {
public:
    int maxSumTwoNoOverlap(vector&lt;int&gt;&amp; nums, int firstLen, int se]]></description><category></category></item><item><title><![CDATA[No.277 - LeetCode[1041] Robot Bounded In Circle - 模拟题]]></title><link>https://blog.youkuaiyun.com/ShellDawn/article/details/120228046</link><guid>https://blog.youkuaiyun.com/ShellDawn/article/details/120228046</guid><author>ShellDawn</author><pubDate>Fri, 10 Sep 2021 18:56:50 +0800</pubDate><description><![CDATA[/*
 * @lc app=leetcode id=1041 lang=cpp
 *
 * [1041] Robot Bounded In Circle
 */

// @lc code=start
class Solution {
public:
    bool isRobotBounded(string str) {
        int x = 0, y = 0;
        vector&lt;int&gt; dirx = {-1, 0, 1, 0};
        vector&lt;i]]></description><category></category></item><item><title><![CDATA[No.276 - LeetCode[1049] Last Stone Weight II - 最优二分配01背包]]></title><link>https://blog.youkuaiyun.com/ShellDawn/article/details/120224449</link><guid>https://blog.youkuaiyun.com/ShellDawn/article/details/120224449</guid><author>ShellDawn</author><pubDate>Fri, 10 Sep 2021 16:10:48 +0800</pubDate><description><![CDATA[/*
 * @lc app=leetcode id=1049 lang=cpp
 *
 * [1049] Last Stone Weight II
 */

// @lc code=start
class Solution {
public:
    int lastStoneWeightII(vector&lt;int&gt;&amp; stones) {
        bitset&lt;1501&gt; dp = {1};
        int sum = 0;
        for(int v]]></description><category></category></item><item><title><![CDATA[No.275 - LeetCode[1096] Brace Expansion II - 复杂模拟题]]></title><link>https://blog.youkuaiyun.com/ShellDawn/article/details/119661422</link><guid>https://blog.youkuaiyun.com/ShellDawn/article/details/119661422</guid><author>ShellDawn</author><pubDate>Fri, 13 Aug 2021 04:07:01 +0800</pubDate><description><![CDATA[写了两个小时，非常麻烦的一道模拟题。
关键在于，缓存字符串，和缓存数组嵌套判断，没有 case，这题过不了????
/*
 * @lc app=leetcode id=1096 lang=cpp
 *
 * [1096] Brace Expansion II
 */

// @lc code=start


class Solution {
public:
    vector&lt;string&gt; duplicate(vector&lt;vector&lt;string&gt;&gt;&amp; v]]></description><category></category></item><item><title><![CDATA[No.274 - LeetCode[779] K-th Symbol in Grammar - 思维]]></title><link>https://blog.youkuaiyun.com/ShellDawn/article/details/119427039</link><guid>https://blog.youkuaiyun.com/ShellDawn/article/details/119427039</guid><author>ShellDawn</author><pubDate>Thu, 05 Aug 2021 20:58:45 +0800</pubDate><description><![CDATA[首先发现个规律：
1，在n增大过程中，前半部分是不变的。
2，n为偶数，对折后值相反
3，n为奇数，中轴对称
直接想法，倒着计算即可。
/*
 * @lc app=leetcode id=779 lang=cpp
 *
 * [779] K-th Symbol in Grammar
 */

// @lc code=start
class Solution {
public:
    int kthGrammar(int n, int k) {
        int ans = 0;
        wh]]></description><category></category></item></channel></rss>