<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[cysisu的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/cysisu</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; cysisu]]></copyright><item><title><![CDATA[leetcode C++ 45. 跳跃游戏 II 给定一个非负整数数组，你最初位于数组的第一个位置。  数组中的每个元素代表你在该位置可以跳跃的最大长度。  你的目标是使用最少的跳跃次数到达数组的最后]]></title><link>https://blog.youkuaiyun.com/cysisu/article/details/105623940</link><guid>https://blog.youkuaiyun.com/cysisu/article/details/105623940</guid><author>cysisu</author><pubDate>Sun, 19 Apr 2020 22:35:55 +0800</pubDate><description><![CDATA[一、思路：

  1、深度搜索，不剪枝，只能通过71多个

  2、深度搜索，map存储每一个pos的count,凡是后面超过这个count，停止搜索，剪枝，最后两个也通过不了

  3、O(n), 通过当前节点找到下下节点的最远位置，保存最远的下一个节点位置，继续这样遍历保存的这个节点，知道下下节点达到末尾。

二、代码：



class Solution {
public:
...]]></description><category></category></item><item><title><![CDATA[leetcode C++ 6. Z 字形变换 将一个给定字符串根据给定的行数，以从上往下、从左到右进行 Z 字形排列。]]></title><link>https://blog.youkuaiyun.com/cysisu/article/details/105609289</link><guid>https://blog.youkuaiyun.com/cysisu/article/details/105609289</guid><author>cysisu</author><pubDate>Sun, 19 Apr 2020 02:33:24 +0800</pubDate><description><![CDATA[一、思路：

   对于Z字型的第i行数据为：let temp1=(row-i-1)*2 temp2=i*2

   i  i+temp1 i+temp1+temp2 1+temp1*2+temp2 1+temp1*2+2*temp ...

二、C++代码：



class Solution {
public:
	string convert(string s,...]]></description><category></category></item><item><title><![CDATA[leetcode C++ 48. 旋转图像 给定一个 n × n 的二维矩阵表示一个图像。  将图像顺时针旋转 90 度。]]></title><link>https://blog.youkuaiyun.com/cysisu/article/details/105604346</link><guid>https://blog.youkuaiyun.com/cysisu/article/details/105604346</guid><author>cysisu</author><pubDate>Sat, 18 Apr 2020 20:16:39 +0800</pubDate><description><![CDATA[一、思路：

   某一个的转化后的路径变化：（i,j）--&gt;(j,n-1-i)--&gt;(n-1-i,n-1-j)--&gt;(i,j), 所以转变一个，就等于转变4个，n为偶数数时，遍历n*n/4；n为奇数时，遍历(n*n-1)/4，因为中心不会变化

二、代码：



class Solution {
public:
	void rotate(vector&lt;vector...]]></description><category></category></item><item><title><![CDATA[leetcode C++ 链表 24. 两两交换链表中的节点 给定一个链表，两两交换其中相邻的节点，并返回交换后的链表。  你不能只是单纯的改变节点内部的值，而是需要实际的进行节点交换]]></title><link>https://blog.youkuaiyun.com/cysisu/article/details/105597188</link><guid>https://blog.youkuaiyun.com/cysisu/article/details/105597188</guid><author>cysisu</author><pubDate>Sat, 18 Apr 2020 13:11:57 +0800</pubDate><description><![CDATA[一、思路：

  在头结点前加一个哑结点，遍历，判断是否当前节点的后两个节点是否为空，为空交换一次，最后返回哑结点的next

二、C++:



class Solution {
public:
	ListNode* swapPairs(ListNode* head) {
		ListNode *dummpy = new ListNode(-1);
		dummpy-&gt;next = h...]]></description><category></category></item><item><title><![CDATA[C++ leetcode 19. 删除链表的倒数第N个节点 给定一个链表，删除链表的倒数第 n 个节点，并且返回链表的头结点。]]></title><link>https://blog.youkuaiyun.com/cysisu/article/details/105592168</link><guid>https://blog.youkuaiyun.com/cysisu/article/details/105592168</guid><author>cysisu</author><pubDate>Sat, 18 Apr 2020 00:56:03 +0800</pubDate><description><![CDATA[一、思路：

  遍历一遍存储节点到vector数组中，然后利用数组指向倒数第n个，将倒数n-1的节点的next指向倒数n的next

二、代码：


class Solution {
public:
	ListNode* removeNthFromEnd(ListNode* head, int n) {
		vector&lt;ListNode*&gt;nodeLists;
		ListN...]]></description><category></category></item><item><title><![CDATA[leetCode C++ 49. 字母异位词分组 给定一个字符串数组，将字母异位词组合在一起。字母异位词指字母相同，但排列不同的字符串。]]></title><link>https://blog.youkuaiyun.com/cysisu/article/details/105591329</link><guid>https://blog.youkuaiyun.com/cysisu/article/details/105591329</guid><author>cysisu</author><pubDate>Sat, 18 Apr 2020 00:00:02 +0800</pubDate><description><![CDATA[一、思路：

   对每一个字符串排序，然后将这个排序的字符串加到map里面，对于每一个新遍历的字符串就和map比较是否相等。

   最开始用map，会出现超时，于是采用hash实现结构的unordered_map就不会超时，在50%的效率左右

二、代码：


class Solution {
public:
	vector&lt;vector&lt;string&gt;&gt; ...]]></description><category></category></item><item><title><![CDATA[leetcode C++ 46. 全排列 给定一个 没有重复 数字的序列，返回其所有可能的全排列。]]></title><link>https://blog.youkuaiyun.com/cysisu/article/details/105590007</link><guid>https://blog.youkuaiyun.com/cysisu/article/details/105590007</guid><author>cysisu</author><pubDate>Fri, 17 Apr 2020 22:27:36 +0800</pubDate><description><![CDATA[一、思路：

   回溯算法，和其它回溯算法区别还蛮大的，这道题遍历我当时还真没想到，是借鉴别人的思路

二、C++代码：



class Solution {
public:
	vector&lt;vector&lt;int&gt;&gt;res;
	vector&lt;vector&lt;int&gt;&gt; permute(vector&lt;int&gt;&amp; nums)...]]></description><category></category></item><item><title><![CDATA[leetcode C++ 23. 合并K个排序链表 合并 k 个排序链表，返回合并后的排序链表。请分析和描述算法的复杂度。]]></title><link>https://blog.youkuaiyun.com/cysisu/article/details/105560155</link><guid>https://blog.youkuaiyun.com/cysisu/article/details/105560155</guid><author>cysisu</author><pubDate>Thu, 16 Apr 2020 16:09:06 +0800</pubDate><description><![CDATA[一、思路：

   第一种：求出每一个链表的最小值，然后把这个节点放到合并的结果链表里面，这个链表指向next

   第二种：优先级队列，头结点放到优先级队列里面，将top的那一个放到合并的链表里面，再讲top指向next,push到队列里面

二、代码

  第一种思路：



class Solution {
public:
	ListNode *insert(ListNo...]]></description><category></category></item><item><title><![CDATA[leetcode C++ 42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图，计算按此排列的柱子，下雨之后能接多少雨水。    上面是由数组 [0,1,0,2,1,0,1,3,2,]]></title><link>https://blog.youkuaiyun.com/cysisu/article/details/105556710</link><guid>https://blog.youkuaiyun.com/cysisu/article/details/105556710</guid><author>cysisu</author><pubDate>Thu, 16 Apr 2020 14:06:04 +0800</pubDate><description><![CDATA[一、思路：

  左边最高和右边最高求一个最小值减去当前高度，就等于当前能装的水的量

二、代码：


class Solution {
public:
	int getMaxRight(vector&lt;int&gt;&amp; height, int index) {
		int maxRight = 0;
		for (; index &lt; height.size(); index...]]></description><category></category></item><item><title><![CDATA[leetcode C++ 39. 组合总和 给定一个无重复元素的数组 candidates 和一个目标数 target ，找出 candidates 中所有可以使数字和为 target 的组合。  c]]></title><link>https://blog.youkuaiyun.com/cysisu/article/details/105555470</link><guid>https://blog.youkuaiyun.com/cysisu/article/details/105555470</guid><author>cysisu</author><pubDate>Thu, 16 Apr 2020 12:51:52 +0800</pubDate><description><![CDATA[一、思路：

     DFS深度搜索，直到所有元素都被遍历。另外如果一组结果的求和大于target，剪枝返回


class Solution {
public:
	vector&lt;vector&lt;int&gt;&gt; combinationSum(vector&lt;int&gt;&amp; candidates, int target) {
		vector&lt;vec...]]></description><category></category></item><item><title><![CDATA[leetcode C++ 28. 实现 strStr() 实现 strStr() 函数。  给定一个 haystack 字符串和一个 needle 字符串，在 haystack 字符串中找出 need]]></title><link>https://blog.youkuaiyun.com/cysisu/article/details/105554677</link><guid>https://blog.youkuaiyun.com/cysisu/article/details/105554677</guid><author>cysisu</author><pubDate>Thu, 16 Apr 2020 11:52:41 +0800</pubDate><description><![CDATA[一、C++


class Solution {
public:
	int strStr(string haystack, string needle) {
		if (needle.size() == 0)
			return 0;
		int res = -1;
		for (int i = 0; i &lt; haystack.size(); i++)
		{
			for (int j =...]]></description><category></category></item><item><title><![CDATA[leetcode C++ 25. K 个一组翻转链表 给你一个链表，每 k 个节点一组进行翻转，请你返回翻转后的链表。]]></title><link>https://blog.youkuaiyun.com/cysisu/article/details/105549084</link><guid>https://blog.youkuaiyun.com/cysisu/article/details/105549084</guid><author>cysisu</author><pubDate>Thu, 16 Apr 2020 02:44:58 +0800</pubDate><description><![CDATA[一、思路：

   先实现两个节点翻转，再实现k个节点翻转，最后实现一组一组翻转

二、C++代码：




class Solution {
public:
	ListNode* swap(ListNode *f1, ListNode *f2, int count) {
		ListNode *nowNode = f2;
		ListNode *f3, *l1, *l2 = NULL, *...]]></description><category></category></item><item><title><![CDATA[leetcode  给定一个只包括 '('，')'，'{'，'}'，'['，']' 的字符串，判断字符串是否有效。  有效字符串需满足：  左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭]]></title><link>https://blog.youkuaiyun.com/cysisu/article/details/105538558</link><guid>https://blog.youkuaiyun.com/cysisu/article/details/105538558</guid><author>cysisu</author><pubDate>Wed, 15 Apr 2020 16:41:45 +0800</pubDate><description><![CDATA[一、C++代码


class Solution {
public:
	bool isValid(string s) {
		stack&lt;char&gt; st;
		for (int i = 0; i &lt; s.size(); i++) {
			char ch = s[i];
			switch (ch)
			{
			case '(':
				st.push(ch);
				...]]></description><category></category></item><item><title><![CDATA[C++ leetcode 21. 合并两个有序链表 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。]]></title><link>https://blog.youkuaiyun.com/cysisu/article/details/105537283</link><guid>https://blog.youkuaiyun.com/cysisu/article/details/105537283</guid><author>cysisu</author><pubDate>Wed, 15 Apr 2020 16:00:54 +0800</pubDate><description><![CDATA[一、C++ 代码


class Solution {
public:
	ListNode* insert(ListNode *res, int val) {
		if (res-&gt;val == INT_MAX) {
			res-&gt;val = val;
			return res;
		}
		else {
			res-&gt;next = new ListNode(val);
	...]]></description><category></category></item><item><title><![CDATA[leetcode  38. 外观数列 「外观数列」是一个整数序列，从数字 1 开始，序列中的每一项都是对前一项的描述。前五项如下]]></title><link>https://blog.youkuaiyun.com/cysisu/article/details/105535228</link><guid>https://blog.youkuaiyun.com/cysisu/article/details/105535228</guid><author>cysisu</author><pubDate>Wed, 15 Apr 2020 14:55:28 +0800</pubDate><description><![CDATA[1、思路：

  从1开始遍历，求出后面每一个转化后的数。依次求下一个。


string countAndSay(int n) {
	string res = "1";
	for (int i = 2; i &lt;= n; i++) {
		string tempStr;
		for (int j = 0; j &lt; res.size(); j++) {
			char ch = r...]]></description><category></category></item><item><title><![CDATA[C++ leetcode 26. 删除排序数组中的重复项 给定一个排序数组，你需要在 原地 删除重复出现的元素，使得每个元素只出现一次，返回移除后数组的新长度。]]></title><link>https://blog.youkuaiyun.com/cysisu/article/details/105525910</link><guid>https://blog.youkuaiyun.com/cysisu/article/details/105525910</guid><author>cysisu</author><pubDate>Wed, 15 Apr 2020 02:32:12 +0800</pubDate><description><![CDATA[一、思路：

  nowPos当前第几个没有重复的数，count指向第nowPos+1个重复数的位置

二、C++


int removeDuplicates(vector&lt;int&gt;&amp; nums) {
	if (nums.size() &lt; 2)
		return nums.size();
	int count = 1;
	int nowPos = 0;
	whil...]]></description><category></category></item><item><title><![CDATA[leetcode C++ 13. 罗马数字转整数 罗马数字包含以下七种字符: I， V， X， L，C，D 和 M。]]></title><link>https://blog.youkuaiyun.com/cysisu/article/details/105517358</link><guid>https://blog.youkuaiyun.com/cysisu/article/details/105517358</guid><author>cysisu</author><pubDate>Tue, 14 Apr 2020 17:48:20 +0800</pubDate><description><![CDATA[一、C++代码：



int romanToInt(string s) {
	int res = 0;
	map&lt;char, int&gt; mapRoman = { {'I',1},{'V',5},{'X',10},{'L',50},{'C',100},{'D',500},{'M',1000} };
	while (s.size() &gt; 0) {
		char temp = s.b...]]></description><category></category></item><item><title><![CDATA[leetcode C++ 2. 两数相加 给出两个 非空 的链表用来表示两个非负的整数。其中，它们各自的位数是按照 逆序 的方式存储的，并且它们的每个节点只能存储 一位 数字。  如果，我们将这两个数]]></title><link>https://blog.youkuaiyun.com/cysisu/article/details/105515581</link><guid>https://blog.youkuaiyun.com/cysisu/article/details/105515581</guid><author>cysisu</author><pubDate>Tue, 14 Apr 2020 16:54:47 +0800</pubDate><description><![CDATA[一、C++


ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
	ListNode *resList = new ListNode(-1);
	resList-&gt;val = -1;
	ListNode *nowNode = resList;
	int carry = 0;
	while (l1 != NULL) {
		int nu...]]></description><category></category></item><item><title><![CDATA[leetcode C++ 4. 寻找两个有序数组的中位数 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。  请你找出这两个有序数组的中位数，并且要求算法的时间复杂度为 O(log]]></title><link>https://blog.youkuaiyun.com/cysisu/article/details/105513137</link><guid>https://blog.youkuaiyun.com/cysisu/article/details/105513137</guid><author>cysisu</author><pubDate>Tue, 14 Apr 2020 15:36:25 +0800</pubDate><description><![CDATA[一、概述：

  这道题思路其实蛮简单的，就是边界太难考虑了，所以一直没能通过，写了好长的代码考虑边界，然后看到一个大神写的代码：

https://leetcode-cn.com/problems/median-of-two-sorted-arrays/solution/c-er-fen-cha-zhao-by-da-li-wang/。简直是叹为天人，敬佩不已，发现自己走的路还很长。

...]]></description><category></category></item><item><title><![CDATA[C++ leetcode  给你一个数组 nums 和一个值 val，你需要 原地 移除所有数值等于 val 的元素，并返回移除后数组的新长度。  不要使用额外的数组空间，你必须仅使用 O(1) 额外]]></title><link>https://blog.youkuaiyun.com/cysisu/article/details/105486894</link><guid>https://blog.youkuaiyun.com/cysisu/article/details/105486894</guid><author>cysisu</author><pubDate>Mon, 13 Apr 2020 13:35:44 +0800</pubDate><description><![CDATA[一、C++代码：


int removeElement(vector&lt;int&gt;&amp; nums, int val) {
	if (nums.size() == 0)
		return 0;
	int right = nums.size() - 1;
	for (int i = 0; i &lt;= right; i++) {
		while (right &gt;= 0 &amp...]]></description><category></category></item></channel></rss>