摘要: 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例 :给定这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 阅读全文
posted @ 2019-07-09 21:06 YF-1994 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例:给定 1->2->3->4, 你应该返回 2->1->4->3. 算法:我们只需要明确如何交换两个结点即可。具体解释见代码。 阅读全文
posted @ 2019-07-09 20:42 YF-1994 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6算法:归并。我们利用归并排序的思想对链表进行排序即可。故时间复杂度为O(nlogn),空间复杂度为O(n)。 阅读全文
posted @ 2019-07-09 20:39 YF-1994 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4算法:线性扫描。我们只需从头到尾扫一遍两个链表。将小的插到新链表头部。最后不要忘了接上未连接的部分。 阅读全文
posted @ 2019-07-09 20:31 YF-1994 阅读(74) 评论(0) 推荐(0) 编辑
摘要: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?算法:线性扫描。我们维护两个指针即可。 阅读全文
posted @ 2019-07-09 20:24 YF-1994 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 冒泡排序做了优化,都是很基础的排序算法就不多做什么说明了。 阅读全文
posted @ 2019-07-09 20:02 YF-1994 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明 : 数组的长度为 [1, 20,000]。 数组中元素的范围是 [-1000, 1000] 阅读全文
posted @ 2019-07-09 15:52 YF-1994 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 给定一个二进制数组, 找到含有相同数量的 0 和 1 的最长连续子数组(的长度)。 示例 1:输入: [0,1]输出: 2说明: [0, 1] 是具有相同数量0和1的最长连续子数组。示例 2:输入: [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子 阅读全文
posted @ 2019-07-09 15:48 YF-1994 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按 阅读全文
posted @ 2019-07-09 11:54 YF-1994 阅读(219) 评论(0) 推荐(1) 编辑
摘要: 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [3,3,5,0,0,3,1,4]输出: 6解释: 在第 4 天(股票价格 阅读全文
posted @ 2019-07-09 11:16 YF-1994 阅读(287) 评论(0) 推荐(0) 编辑