<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sysu_xiaoming的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sysu_xiaoming</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sysu_xiaoming]]></copyright><item><title><![CDATA[leetcode解题报告24. Swap Nodes in Pairs]]></title><link>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/74137969</link><guid>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/74137969</guid><author>sysu_xiaoming</author><pubDate>Sun, 02 Jul 2017 17:14:02 +0800</pubDate><description><![CDATA[leetcode解题报告24. Swap Nodes in Pairs题目地址 难度是medium题目描述给定一个链表，把相邻的元素交换位置 
比如 
给定1->2->3->4->5 
变成2->2->4->3->5我的思路题目的核心操作是交换两个相邻元素，如果链表长度是2，则问题就变成简单的交换两个相邻元素。于是可以考虑用递归的方法，每次只处理两个元素。当然用循环遍历的方式逐步处理应该也是可以的，]]></description><category></category></item><item><title><![CDATA[证明精确4SAT问题是NPC问题]]></title><link>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/73734160</link><guid>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/73734160</guid><author>sysu_xiaoming</author><pubDate>Mon, 26 Jun 2017 12:14:35 +0800</pubDate><description><![CDATA[证明精确4SAT问题是NPC问题问题：在精确的4SAT(EaACT 4SAT)问题中，输入为一组子句，每个子句都是4个文字的析取，且每个变量最多在每个子句中出现一次。目标是求它的满足赋值—-如果该赋值存在。证明精确的4SAT是NP-完全问题。分析：证明某个问题是NPC问题，一般思路是找一个已知的NPC问题来归约带该问题。其中3SAT问题是已知的NPC问题，所以接下来只要证明3SAT问题可以归约到精确]]></description><category></category></item><item><title><![CDATA[leetcode解题报告22. Generate Parentheses]]></title><link>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/73694994</link><guid>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/73694994</guid><author>sysu_xiaoming</author><pubDate>Sat, 24 Jun 2017 21:27:34 +0800</pubDate><description><![CDATA[leetcode解题报告22. Generate Parentheses题目地址 难度是medium题目描述给定一个整数n，代表左括号的个数，要求返回左括号数为n的所有合法的括号组合字符串。我的思路题目直观来看比较简单，我们可以方便地利用stack的后进先出来判断合法的括号字符串，生成一个合法的括号字符串也比较简单。但是难点在于要遍历生成 
所有合法的括号字符串，并返回。其实可以发现生成一个合法的括]]></description><category></category></item><item><title><![CDATA[leetcode解题报告21. Merge Two Sorted Lists]]></title><link>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/73359449</link><guid>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/73359449</guid><author>sysu_xiaoming</author><pubDate>Fri, 16 Jun 2017 23:41:15 +0800</pubDate><description><![CDATA[leetcode解题报告21. Merge Two Sorted Lists题目地址 难度是easy题目描述合并两条有序的链表我的思路题目比较简单，是一条数据结构方面的题目，难点是链表的操作。 
此外，这个题目有一点问题，就是没有显式的说明这个排序是升序还是降序。这样更合理的方式应该通过传入的链表进行检验才行。但是这就比较麻烦了，我还是按照升序来写代码而已。我的代码/**
 * Definition]]></description><category></category></item><item><title><![CDATA[leetcode解题报告20. Valid Parentheses]]></title><link>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/72991847</link><guid>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/72991847</guid><author>sysu_xiaoming</author><pubDate>Sat, 10 Jun 2017 16:33:14 +0800</pubDate><description><![CDATA[leetcode解题报告20. Valid Parentheses题目地址 难度是easy题目描述给一条由“(){}[]”这6种字符组成的字符串，判断其是否合法，即一个左括号必须和其后面第一个右括号是同类型的。我的思路题目比较简单，难点在于想到用stack的后进先出的技巧来完成括号的配对。我的代码class Solution {
public:
    bool isValid(string s)]]></description><category></category></item><item><title><![CDATA[leetcode解题报告19. Remove Nth Node From End of List]]></title><link>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/72860558</link><guid>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/72860558</guid><author>sysu_xiaoming</author><pubDate>Sun, 04 Jun 2017 18:32:40 +0800</pubDate><description><![CDATA[leetcode解题报告19. Remove Nth Node From End of List题目地址 难度是medium题目描述给定一个链表，只有头指针，和一个数字n。要求把倒数第n个数给删掉。最后删除后链表的头指针。我的思路题目本身是很简单的，是数据结构层面的题目。最简单思路是先遍历一遍链表，看它的长度，然后可以算出实际要删除的位置。然后第二次遍历就可以把它删掉了。 
但是题目有建议只遍历一次]]></description><category></category></item><item><title><![CDATA[leetcode解题报告18. 4Sum]]></title><link>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/72794434</link><guid>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/72794434</guid><author>sysu_xiaoming</author><pubDate>Sun, 28 May 2017 19:53:58 +0800</pubDate><description><![CDATA[leetcode解题报告18. 4Sum题目地址 难度是medium题目描述和3SUM问题类似，输入一个整数数组，和一个目标整数target。从数组中选择4个数，使得这四个数之和等于arget。现在要求找出所有满足要求的四元组，并且要求这些四元组之间不重复（其中四元组里的元素是没有顺序的，即(1,2,3,4)和(4,3,2,1)是同一个四元组）我的思路在会做3sum问题的基础上，4sum问题就很简单]]></description><category></category></item><item><title><![CDATA[leetcode解题报告14. Longest Common Prefix]]></title><link>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/72597949</link><guid>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/72597949</guid><author>sysu_xiaoming</author><pubDate>Sun, 21 May 2017 13:27:01 +0800</pubDate><description><![CDATA[leetcode解题报告14. Longest Common Prefix题目地址 难度是esay题目描述输入多条字符串，找出它们的最长的公共前缀子串。我的思路很简单的题目，相比和它类似的找最长公共子串的题目简单多了。这里面要求的是前缀，那么直接思路就是从第一个位置开始看是不是共同的，如是直到有不同的。假设有n条字符串的字符总数是n，那复杂度是O(n)我的代码class Solution {
pub]]></description><category></category></item><item><title><![CDATA[leetcode解题报告16. 3Sum Closest]]></title><link>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/72026784</link><guid>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/72026784</guid><author>sysu_xiaoming</author><pubDate>Sun, 14 May 2017 16:48:24 +0800</pubDate><description><![CDATA[leetcode解题报告16. 3Sum Closest题目地址 难度是medium题目描述和3SUM问题类似，输入一个整数数组，和一个目标整数target。从数组中选择3个数，使得这三个数之和最接近target。要求返回这三个数之和即可，不要求具体返回是哪三个数。默认有且只有一个解。我的思路同样地最简单的方法是三层循环暴力遍历即可。但是这一般不是我们相要的答案。 
和3sum问题相比，其实我们可以]]></description><category></category></item><item><title><![CDATA[leetcode解题报告11. Container With Most Water]]></title><link>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/71375525</link><guid>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/71375525</guid><author>sysu_xiaoming</author><pubDate>Sun, 07 May 2017 23:10:11 +0800</pubDate><description><![CDATA[leetcode解题报告11. Container With Most Water题目地址 难度是medium题目描述原文： 
Given n non-negative integers a1, a2, …, an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that th]]></description><category></category></item><item><title><![CDATA[# leetcode解题报告9. Palindrome Number]]></title><link>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/71037305</link><guid>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/71037305</guid><author>sysu_xiaoming</author><pubDate>Sun, 30 Apr 2017 23:43:55 +0800</pubDate><description><![CDATA[leetcode解题报告9. Palindrome Number题目地址 难度是easy题目描述判断一个整数是不是回文串。回文串指从左到右和从右到左是一样。我的思路最直接的思路是把整数转成字符串类型，再判断是不是回文串就行了。但是进一步想，其实可以更直接的，把一个整数翻转(高位变低位)，如果是回文串，那翻转结果是和原来整数是一样的。我的代码class Solution {
public:
    b]]></description><category></category></item><item><title><![CDATA[leetcode解题报告17. Letter Combinations of a Phone Number]]></title><link>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/70478327</link><guid>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/70478327</guid><author>sysu_xiaoming</author><pubDate>Sun, 23 Apr 2017 00:00:55 +0800</pubDate><description><![CDATA[leetcode解题报告17. Letter Combinations of a Phone Number题目地址 难度是easy题目描述在手机９个数字格里，其实一个数字对应几个字母的。其对应关系如下(为了方便，直接代码形式给出，比较容易理解看懂)my_map['0'] = ' ';
my_map['2'] = "abc";
my_map['3'] = "def";
my_map['4'] = "g]]></description><category></category></item><item><title><![CDATA[leetcode解题报告15. 3Sum]]></title><link>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/70186009</link><guid>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/70186009</guid><author>sysu_xiaoming</author><pubDate>Sat, 15 Apr 2017 18:17:58 +0800</pubDate><description><![CDATA[leetcode解题报告15. 3Sum题目地址 难度是medium题目描述输入一个整数数组，从中选择３个数，使得这三个数之和为０，这三个数称为一个三元组。现在要求所有满足要求的三元组。并且要求三元组之间不重复。（其中三元组里的元素是没有顺序的，即(1,2,3)和(3,2,1)是同一个三元组）我的思路首先暴力的办法是遍历所有三元组，找出满足要求的即可。但是一方面复杂度太高了O(n3)O(n^3)的复]]></description><category></category></item><item><title><![CDATA[leetcode解题报告8. String to Integer (atoi)]]></title><link>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/69788087</link><guid>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/69788087</guid><author>sysu_xiaoming</author><pubDate>Sat, 08 Apr 2017 22:07:12 +0800</pubDate><description><![CDATA[leetcode解题报告8. String to Integer (atoi)题目地址 难度是medium题目描述把一个字符串，变成数字 
比如”123”, 返回数字123我的思路粗看，是很简单的模拟类题目。但是提了几次才过，难点在于考虑各种边界情况(特殊情况) 
比如，字符串为空，前面是空字符，前面有符号标示(正负号)，字符串包含其他符号，还有溢出等问题。我的代码class Solution {]]></description><category></category></item><item><title><![CDATA[leetcode解题报告7. Reverse Integer]]></title><link>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/68953792</link><guid>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/68953792</guid><author>sysu_xiaoming</author><pubDate>Sun, 02 Apr 2017 20:16:28 +0800</pubDate><description><![CDATA[leetcode解题报告7. Reverse Integer题目地址 难度是easy题目描述翻转数字，看例子就很明白了 
Example1: x = 123, return 321 
Example2: x = -123, return -321我的思路很简单的模拟类题目，按照操作就行了。关键是会利用求余运算和除法，把一个数，把它的每一位求出来。另外要注意溢出的情况。题目是要求当要求溢出时，返回０我]]></description><category></category></item><item><title><![CDATA[leetcode解题报告6. ZigZag Conversion]]></title><link>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/66474338</link><guid>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/66474338</guid><author>sysu_xiaoming</author><pubDate>Sun, 26 Mar 2017 13:09:42 +0800</pubDate><description><![CDATA[leetcode解题报告6. ZigZag Conversion题目地址 难度是medium题目描述给定一个字符串，按照zigzag的方式排，然后输出按这种方式排之后的顺序的字符串。 
（比较复杂，但看例子就很明白了，具体看题目地址）我的思路刚看的时候，觉得是模拟类的题目，直接按zigzag的方式排就好了。但是，对字符串按某个方式排是比较抽象的，排成某个图案是让人来看的，但对机器或程序来说，还是以某]]></description><category></category></item><item><title><![CDATA[leetcode解题报告5. Longest Palindromic Substring]]></title><link>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/63259640</link><guid>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/63259640</guid><author>sysu_xiaoming</author><pubDate>Sat, 18 Mar 2017 16:47:51 +0800</pubDate><description><![CDATA[leetcode解题报告5. Longest Palindromic Substring题目地址 难度是medium题目描述回文串：当一个字符串从左到右，和从右到左是一样的的时候，称为回文串 
题目要求，给定一个字符串，找出它的子串里面最长的回文串我的思路第一个思路：首先最直观的思路是暴力求解，遍历所有子串，判断是否是回文串，在选择最长的那个就行了。简单可行，但肯定超时第二个思路：通过窗口移动来遍历]]></description><category></category></item><item><title><![CDATA[leetcode解题报告258. Add Digits]]></title><link>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/61620572</link><guid>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/61620572</guid><author>sysu_xiaoming</author><pubDate>Sun, 12 Mar 2017 16:50:29 +0800</pubDate><description><![CDATA[leetcode解题报告258. Add Digits题目地址 难度是easy题目描述给定一个正整数，将其每一位上的数相加起来，得到另一个数，如果该数不是个位数，重复以上操作，直到得到一个个位数。 
提示，这可以有O(1)O(1)复杂度的算法我的思路模拟操作类的题目，直接暴力实现题目操作即可。 
题目提示有O(1)O(1)复杂度的算法，应该是有公式，直接算出来。但没想到这公式。我的代码class S]]></description><category></category></item><item><title><![CDATA[leetcode解题报告3. Longest Substring Without Repeating Characters]]></title><link>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/60467479</link><guid>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/60467479</guid><author>sysu_xiaoming</author><pubDate>Sun, 05 Mar 2017 15:12:57 +0800</pubDate><description><![CDATA[leetcode解题报告3. Longest Substring Without Repeating Characters题目地址 难度是medium题目描述给定一个字符串，找出里面最长的连续子串，其中要求子串不能有重复的字符。题目只要求求出这个最长子串的长度而已，不需要返回具体的子串。我的思路首先容易想到暴力算法，两层循环，可以遍历所有子串。但是这时间复杂度高，而且明显没必要，有很多优化的地方。]]></description><category></category></item><item><title><![CDATA[leetcode解题报告2. Add Two Numbers]]></title><link>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/57110166</link><guid>https://blog.youkuaiyun.com/sysu_xiaoming/article/details/57110166</guid><author>sysu_xiaoming</author><pubDate>Sat, 25 Feb 2017 20:07:33 +0800</pubDate><description><![CDATA[leetcode解题报告2. Add Two Numbers题目地址 难度是medium题目描述用单链表来表示一个大整数，其中单链表的每个节点只有一个数0~9。给两个这样单链表表示的整数，求它们的和(还是用单链表表示)我的思路题目比较难看懂，刚开始还以为只是把单链表对应节点相加而已，没想到是把单链表看着一个整数相加，这样的话，要考虑进位了。 
理解题目之后就不难了，难点在于 
1. 单链表的操作(考]]></description><category></category></item></channel></rss>