@kidultff · 2020年4月30日 剑指Offer算法题-反转链表 题目描述输入一个链表,反转链表后,输出新链表的表头。题解一个很简单的办法是将所有指针节点存入一个vector中,然后再重新链接,这样的时间复杂度是2n,空间复杂度是n。一个更好的办法是遍历链表,直接反转。代码如下/* struct ListNode&n ...
@kidultff · 2020年4月28日 剑指Offer算法题-树的子结构 题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)题解思路是两个树全都先序遍历一下,然后判断B的序列是否是A的子序列即可/* struct TreeNode { int val; struct T ...
@kidultff · 2020年4月24日 剑指Offer算法题-二进制中1的个数 题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。题解这道题用位运算会比较简单,对于正数,将这个数与0x00000001进行与运算,即可判断最低位是否为1,接着将数字右移一位,继续判断。对于补码负数,直接右移一位会导致 ...
@kidultff · 2020年4月18日 剑指Offer算法题-变态青蛙跳台阶 题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。题解这道题依然和斐波那契数列大同小异,写一个循环,每次跳不同的阶数就可以了。记得用记忆化搜索class Solution ...