随笔分类 - LeetCode
摘要:https://www.cnblogs.com/TenosDoIt/p/3738693.html
阅读全文
摘要:思路:为了爬到n层楼梯,有两个选择,在n-1阶前进1步 or 在 n-1阶前进2步,即f(n) = f(n-1) + f(n-2)
阅读全文
摘要:思路:面积为高度×宽度,分别指向首尾两个元素,并记录此时的面积,当移动首尾时,宽度减小,如果移动高度较大的元素,面积必定减小,所以此时 应该移动较小的元素。
阅读全文
摘要:给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 例如:给定二叉树: [3,9,20,null,null,15,7], 返回其层次遍历结果:
阅读全文
摘要:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 说明: 你的算法只能使用常数的额外空间。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 思路:定义三个指针prev, cur, next。注意nex
阅读全文
摘要:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? 思路:定义两个指针,一快一慢,快指针先走n步,然后一起走,快指针到达尾结点时,慢指针的下一个即是要被删除的结点。
阅读全文
摘要:给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 示例 1: 示例 2:
阅读全文
摘要:给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 示例 1: 示例 2:
阅读全文
摘要:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3->3 输出: 1->2->3 思路 :判断当前结点与其下一个结点值是否相等,相等则删除下一个节点 class Solution { publ
阅读全文
摘要:Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x. You should preserve the
阅读全文
摘要:输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL1、迭代法,超时 ListNode* reverseList(ListNode* head) { if(!head || !head->next)return head; ListNode dummy(-1); ListNode* prev = &dum...
阅读全文
摘要:https://leetcode.com/problems/distinct-subsequences/ Given a string S and a string T, count the number of distinct subsequences of T in S. A subsequen
阅读全文
摘要:https://leetcode.com/problems/decode-ways/ A message containing letters from A-Z is being encoded to numbers using the following mapping: Given an enc
阅读全文
摘要:很不好想的一道题,参考:http://blog.csdn.net/doc_sgl/article/details/11832965 分为两步:把原矩阵转为直方图,再用largest rectangle求解:http://www.cnblogs.com/573177885qq/p/5537334.ht
阅读全文
摘要:leetcode上的一道题,求[1,2,3]的所有子集,相当于求1和[2,3]所有子集的集合,因此先求[2,3]的子集,进而先 求[3]的子集,因此可以用递归来做。在这个过程中,需要保存路径。
阅读全文
摘要:动态规划 int minimumTotal (vector<vector<int>>& triangle) { for (int i = triangle.size() - 2; i >= 0; --i) for (int j = 0; j < i + 1; ++j) triangle[i][j]
阅读全文
摘要:vector<vector<int>> generate(int num) { vector<vector<int>> result; vector<int> array; for (int i = 1; i <= num; i++) { for (int j = i - 2; j > 0; j--
阅读全文
摘要:思路很简单,将string转为int,计算完后再转为string,但要简洁的实现起来并不容易。 typedef vector<int> bigint; bigint make_bigint(string const& s) { //将字符串转为vector<int> bigint n; //将s中的
阅读全文
摘要:这题还是很有难度的。通过数组记录元素的长度,将目标数组与其进行比较,再对相应的子串进行缩小,并记录相应的起点与长度。 提取包含子串的最小窗口,可以是无序的。 1、建立一个256个大小的ASCII数组,统计子串中每个字符出现的次数; 2、用两个指针,一个指针表示窗口的起始位置,一个不断后移直至这个窗口
阅读全文
摘要:struct Interval{ int start; int end; Interval() :start(0), end(0){} Interval(int s, int e) :start(s), end(e){} }; vector<Interval> insert(vector<Inter
阅读全文