<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[小明的博客]]></title><description><![CDATA[傲不可长 欲不可纵 乐不可极 志不可满]]></description><link>https://blog.youkuaiyun.com/sb_Ihateyou</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sb_Ihateyou]]></copyright><item><title><![CDATA[Leecode＜每日一题＞正则表达式匹配]]></title><link>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119797958</link><guid>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119797958</guid><author>sb_Ihateyou</author><pubDate>Thu, 19 Aug 2021 11:22:27 +0800</pubDate><description><![CDATA[Leecode＜每日一题＞正则表达式匹配
题目链接
思路：递归+枚举
class Solution {
public:
bool isMatch(string s, string p) {
	int num = 0;
	for (int i = 0; i &lt; p.length(); i++)
	{
		if (p[i] == '*') continue;

		if (i + 1 &lt; p.length() &amp;&amp; p[i + 1] == '*')
		{
			if (p[i] =]]></description><category></category></item><item><title><![CDATA[Leecode＜每日一题＞N 皇后]]></title><link>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119773983</link><guid>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119773983</guid><author>sb_Ihateyou</author><pubDate>Wed, 18 Aug 2021 10:11:31 +0800</pubDate><description><![CDATA[Leecode＜每日一题＞N 皇后
题目链接
思路：回溯法+限制数组
class Solution {
public:
        bool lie[10]{};
        bool up[20]{};
        bool down[20]{};

        int choose[10]{};

        vector&lt;vector&lt;string&gt;&gt; rt;

        void dfs(int cur,int n)
        {
      ]]></description><category></category></item><item><title><![CDATA[Leecode＜每日一题＞学生出勤记录 II]]></title><link>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119751840</link><guid>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119751840</guid><author>sb_Ihateyou</author><pubDate>Tue, 17 Aug 2021 10:59:40 +0800</pubDate><description><![CDATA[Leecode＜每日一题＞学生出勤记录 II
题目链接
思路：动态规划，
dp[i][0]，表示n == i，缺勤次数为0时的可能情况数。
dp[i][1]，表示n == i，缺勤次数为1时的可能情况数。
class Solution {
public:
    int checkRecord(int n) {
        long long dp[100010][2]{};
        dp[1][0] = 2,dp[1][1] = 1;
        dp[2][0] = 4,dp[2][1]]]></description><category></category></item><item><title><![CDATA[Leecode＜每日一题＞优美的排列]]></title><link>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119732371</link><guid>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119732371</guid><author>sb_Ihateyou</author><pubDate>Mon, 16 Aug 2021 14:27:45 +0800</pubDate><description><![CDATA[Leecode＜每日一题＞优美的排列
题目链接
思路：枚举优化法，将每个位置可选择的情况枚举出来，然后通过递归枚举每一种可行的情况。
class Solution {
public:
    vector&lt;vector&lt;int&gt;&gt; ab_use = {
	{},
	{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},
	{1,2,4,6,8,10,12,14},
	{1,3,6,9,12,15},
	{1,2,4,8,12},
	{1,5,10,15},
	{]]></description><category></category></item><item><title><![CDATA[Leecode＜每日一题＞出界的路径数]]></title><link>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119714811</link><guid>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119714811</guid><author>sb_Ihateyou</author><pubDate>Sun, 15 Aug 2021 15:49:46 +0800</pubDate><description><![CDATA[Leecode＜每日一题＞出界的路径数
题目链接
思路：动态规划，dp[i][j][step] 表示在位置[i,j]处，可移动距离为step时，出界的路径数。
class Solution {
public:
int dp[51][51][51]{};
vector&lt;vector&lt;int&gt;&gt; dir= { {1,0},{-1,0},{0,1},{0,-1} };

    int findPaths(int m, int n, int maxMove, int startRow, i]]></description><category></category></item><item><title><![CDATA[Leecode＜每日一题＞统计不开心的朋友]]></title><link>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119697374</link><guid>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119697374</guid><author>sb_Ihateyou</author><pubDate>Sat, 14 Aug 2021 10:21:12 +0800</pubDate><description><![CDATA[Leecode＜每日一题＞统计不开心的朋友
题目链接
思路：先打两张表，一张是匹配表，另一张是两个人之间的好感优先级表，然后枚举就行。
class Solution {
public:
    int unhappyFriends(int n, vector&lt;vector&lt;int&gt;&gt;&amp; preferences, vector&lt;vector&lt;int&gt;&gt;&amp; pairs) {
        int match[510][510];
        ]]></description><category></category></item><item><title><![CDATA[Leecode＜每日一题＞数字 1 的个数]]></title><link>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119671704</link><guid>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119671704</guid><author>sb_Ihateyou</author><pubDate>Fri, 13 Aug 2021 11:22:33 +0800</pubDate><description><![CDATA[Leecode＜每日一题＞数字 1 的个数
题目链接
思路：找规律，统计每一位上1的个数
class Solution {
public:
   int countDigitOne(int n) {
	string num = to_string(n);

	int sum = 0;
	int fro = 0;
	
	for (int i = 0; i &lt; num.length(); i++)
	{
        int yu = (int)pow(10, num.size()-i-1);
		in]]></description><category></category></item><item><title><![CDATA[Leecode＜每日一题＞最长回文子序列]]></title><link>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119637092</link><guid>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119637092</guid><author>sb_Ihateyou</author><pubDate>Thu, 12 Aug 2021 10:38:56 +0800</pubDate><description><![CDATA[Leecode＜每日一题＞最长回文子序列
题目链接
思路：动态规划
dp[i][j]表示下标i到j的区间内，最大的回文子序列的长度。
动态转移方程：
dp[i][end] = dp[i + 1][end - 1] + 2;    //区间首位相同的转移方程
dp[i][end] = max(dp[i][end - 1],dp[i+1][end]);  //区间首位不同的转移方程
class Solution {
public:
    int longestPalindromeSubseq(string s]]></description><category></category></item><item><title><![CDATA[Leecode＜每日一题＞等差数列划分 II - 子序列]]></title><link>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119597585</link><guid>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119597585</guid><author>sb_Ihateyou</author><pubDate>Wed, 11 Aug 2021 10:37:05 +0800</pubDate><description><![CDATA[Leecode＜每日一题＞等差数列划分 II - 子序列
题目链接
思路：动态规划+哈希表
class Solution {
public:
typedef long long ll;
    
int numberOfArithmeticSlices(vector&lt;int&gt;&amp; nums) {
	auto tab = vector&lt;unordered_map&lt;int, int&gt;&gt;(nums.size() + 1);

	int sum = 0;
	for (int]]></description><category></category></item><item><title><![CDATA[Leecode＜每日一题＞环形数组是否存在循环]]></title><link>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119481109</link><guid>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119481109</guid><author>sb_Ihateyou</author><pubDate>Sat, 07 Aug 2021 11:03:01 +0800</pubDate><description><![CDATA[Leecode＜每日一题＞环形数组是否存在循环
题目链接
思路：彩色标记法，同一入口走过的路用同一种颜色标记
时间复杂度o(n)
空间复杂度o(1)
class Solution {
public:
#define k 1010
bool circularArrayLoop(vector&lt;int&gt;&amp; nums) {
	for (int i = 0; i &lt; nums.size(); i++){
		if (nums[i] != 0)	{
			int sign = nums[i] ]]></description><category></category></item><item><title><![CDATA[Leecode＜每日一题＞找到最终的安全状态]]></title><link>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119418195</link><guid>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119418195</guid><author>sb_Ihateyou</author><pubDate>Thu, 05 Aug 2021 15:02:45 +0800</pubDate><description><![CDATA[Leecode＜每日一题＞找到最终的安全状态
题目链接
思路：拓扑排序，先根据原图记录一下反图，然后将原图中出度为0的点加入队列中，然后将以此结点为边的目标点的源结点出度减一，然后再将出度为0的点加入队列中，直至队列为空。
vector&lt;int&gt; eventualSafeNodes(vector&lt;vector&lt;int&gt;&gt;&amp; graph) {
	vector&lt;int&gt; outdu(graph.size());

	vector&lt;int&gt; rs]]></description><category></category></item><item><title><![CDATA[Leecode＜每日一题＞ 网络延迟时间]]></title><link>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119321471</link><guid>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119321471</guid><author>sb_Ihateyou</author><pubDate>Mon, 02 Aug 2021 11:22:53 +0800</pubDate><description><![CDATA[Leecode＜每日一题＞ 网络延迟时间
题目链接
思路：其实就是求最小生成树，我使用的是prim算法
维护两个集合，一个是已添加结点集合，一个是未添加集合，循环n-1次，维护一个距离数组，每次循环添加一个离源点最短的结点进入集合，并以此更新结点的距离。
int networkDelayTime(vector&lt;vector&lt;int&gt;&gt;&amp; times, int n, int k) {
	auto graph = vector&lt;vector&lt;pair&lt;int,i]]></description><category></category></item><item><title><![CDATA[Leecode＜每日一题＞二叉树的垂序遍历]]></title><link>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119272366</link><guid>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119272366</guid><author>sb_Ihateyou</author><pubDate>Sat, 31 Jul 2021 10:53:54 +0800</pubDate><description><![CDATA[Leecode＜每日一题＞二叉树的垂序遍历
题目链接
思路：map+multiset+dfs
这题其实就是按照纵坐标、横坐标、值依次排序。
map 键：坐标    值：multiset（用于给同一坐标的值排序），然后重写map比较器，先纵坐标再横坐标
我的代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;]]></description><category></category></item><item><title><![CDATA[Leecode＜每日一题＞二叉树中所有距离为 K 的结点]]></title><link>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119172786</link><guid>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119172786</guid><author>sb_Ihateyou</author><pubDate>Wed, 28 Jul 2021 10:35:15 +0800</pubDate><description><![CDATA[Leecode＜每日一题＞二叉树中所有距离为 K 的结点
题目链接
思路：先遍历一遍将每个节点的父节点存储下来，然后从target开始层次遍历，找到距离为k的节点即可。
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), ]]></description><category></category></item><item><title><![CDATA[Leecode＜每日一题＞得到子序列的最少操作次数]]></title><link>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119105450</link><guid>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119105450</guid><author>sb_Ihateyou</author><pubDate>Mon, 26 Jul 2021 11:15:39 +0800</pubDate><description><![CDATA[Leecode＜每日一题＞得到子序列的最少操作次数
题目链接
思路：实际上这题是求公共最长子序列，我是用哈希表+动态规划+二分查找
哈希表存target元素所对应的下标
dp[i] 表示长度为i的子序列元素的最后位置
二分查找每次找到第一个比mp[x]大的元素，并更新他；
class Solution {
public:
    int dp[100100]{};
int minOperations(vector&lt;int&gt;&amp; target, vector&lt;int&gt;&amp; ]]></description><category></category></item><item><title><![CDATA[Leecode——8. 字符串转换整数 (atoi)]]></title><link>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119054205</link><guid>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119054205</guid><author>sb_Ihateyou</author><pubDate>Sat, 24 Jul 2021 10:29:04 +0800</pubDate><description><![CDATA[Leecode——8. 字符串转换整数 (atoi)
题目链接
思路：模拟，注意用long long 存
class Solution {
public:
    int myAtoi(string s) {
        int i=0;
        while(s[i] == ' ')
        {
            i++;
        }

        int z = 1;
        if(s[i] == '-')
        {
            z = ]]></description><category></category></item><item><title><![CDATA[Leecode＜每日一题＞替换隐藏数字得到的最晚时间]]></title><link>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119053729</link><guid>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119053729</guid><author>sb_Ihateyou</author><pubDate>Sat, 24 Jul 2021 10:03:55 +0800</pubDate><description><![CDATA[Leecode＜每日一题＞替换隐藏数字得到的最晚时间
题目链接
思路：枚举所有情况
class Solution {
public:
    string maximumTime(string time) {
        if(time[0] == '?' &amp;&amp; time[1] == '?')
        {
            time[0] = '2';
            time[1] = '3';
        }

        if(time[0] == ']]></description><category></category></item><item><title><![CDATA[Leecode——139. 单词拆分]]></title><link>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119043982</link><guid>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119043982</guid><author>sb_Ihateyou</author><pubDate>Fri, 23 Jul 2021 20:42:12 +0800</pubDate><description><![CDATA[Leecode——139. 单词拆分
题目链接
思路：动态规划+哈希表   dp[i]表示从0下标开始到i的字符串是否可以被拆分
class Solution {
public:	
	bool wordBreak(string s, vector&lt;string&gt;&amp; wordDict) {
        unordered_map&lt;string, bool&gt; mp;	
		for (auto&amp; x : wordDict)		
			mp[x] = true;

		a]]></description><category></category></item><item><title><![CDATA[Leecode——7. 整数反转]]></title><link>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119042317</link><guid>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119042317</guid><author>sb_Ihateyou</author><pubDate>Fri, 23 Jul 2021 18:49:40 +0800</pubDate><description><![CDATA[Leecode——7. 整数反转
题目链接
注意：先比较，再累乘，否者会越界
class Solution {
public:
    int reverse(int x) {
        int rev = 0;
        while (x) {
            if (rev &lt; INT_MIN / 10 || rev &gt; INT_MAX / 10) {
                return 0;
            }
            int digi]]></description><category></category></item><item><title><![CDATA[Leecode＜每日一题＞寻找重复数]]></title><link>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119040195</link><guid>https://blog.youkuaiyun.com/sb_Ihateyou/article/details/119040195</guid><author>sb_Ihateyou</author><pubDate>Fri, 23 Jul 2021 17:11:47 +0800</pubDate><description><![CDATA[Leecode＜每日一题＞寻找重复数
题目链接
思路：快慢指针
class Solution {
public:
    int findDuplicate(vector&lt;int&gt;&amp; nums) {
        int slow=0,fast=0;
        do
        {
            slow = nums[slow];
            fast = nums[nums[fast]];
        }while(nums[slow] != n]]></description><category></category></item></channel></rss>