剑指offer
清凉一度
喜欢经典,经典是时间的产物。
总觉得自己还小,干什么都还早。有道是“记得少年骑木马,转眼已是白头人”当我认识到这一点的时候,特别后悔没有珍惜时间。这里面的笔记是,很长时间以来对我自己的提升,自己的学习过程,大家的阅读和评论是对我的一丝认可,一点激励。
展开
-
二叉树的深度
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }...原创 2020-03-25 17:43:14 · 347 阅读 · 0 评论 -
反转链表
输入一个链表,反转链表后,输出新链表的表头。//第一种方法是:非递归方法/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNo...原创 2020-03-25 17:21:33 · 296 阅读 · 0 评论 -
链表中倒数第k个结点
输入一个链表,输出该链表中倒数第k个结点/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* FindKthToTail(ListNode* pListHead,...原创 2020-03-25 17:15:21 · 300 阅读 · 0 评论 -
跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。首先我们考虑最简单的情况。如果只有1级台阶,那显然只有一种跳法。如果有两级台阶,那就有两种跳法:一种是分两次跳,每次跳1级;另一种就是一次跳2级。接着我们再谈论一般情况。我们把n级台阶时的跳法看成n的函数,记为f(n)。当n>2 时,第一次跳的时候就有两种不同的...原创 2020-03-25 16:00:53 · 201 阅读 · 0 评论 -
跳台阶升级版
跳台阶升级版一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路:1级有1种方法 2级有2种 3级有 f(2)+f(1)+1=4 4级有:f(3)+f(2)+f(1)+1=8 //这个可以用数学来解释:F(n) = F(n-1)+F(n-2)+...+F(1)+1 F(n-1) = F(n-2)+F(n-3)+...+F(1...原创 2020-03-25 15:59:18 · 227 阅读 · 0 评论 -
从尾到头打印链表
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。有三种思路,第一就是利用栈先入后出的特性完成,第二就是存下来然后进行数组翻转。第三是利用递归。 栈思路:class Solution {public: vector<int> printListFromTailToHead(ListNode* head) { vector<int&g...原创 2020-03-21 23:03:54 · 130 阅读 · 0 评论 -
替换空格(字符串)
题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解题思路:思路:从前向后记录‘ ’数目,从后向前替换‘ ’。 重点:从后向前替换的时候的技巧 例如:“we are lucky”0 1 2 3 4 5 6 7 8 9 10 11w e a r e l u c k y可以...原创 2020-03-21 22:33:29 · 144 阅读 · 0 评论