kongkong
首页
归档
分类
标签
关于
剑指Offer——(17)树的子结构
题目描述: 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 实现如下: //分两步 //第一步:寻找与B树根节点val相等的A树节点。如果找到进入第二步,否则继续寻找,直到找完A树 //第二步:以找的节点作为A树子树的根节点,同时遍历两棵树,判断是否所有节点都相同 //特殊情况: //1.进行第二步时注意有可能存在B树大小等于A的子树、B树大小小于A
2020-06-28
Data Structures and Algorithms
剑指Offer
剑指Offer——(16)合并两个排序的链表
题目描述: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 实现如下: //本题在线测试用例怎么还是无头节点链表→_→,啊... //比较value谁小谁添加到新链表中 //新链表的头节点指针为newHead,由s指针负责添加信节点 //特殊情况: //1.传入空指针 //2.任意一个链表添加完毕 //3.传入的一个链表为空,另一个不为空 //节点
2020-06-28
Data Structures and Algorithms
剑指Offer
剑指Offer——(15)反转链表
题目描述: 输入一个链表,反转链表后,输出链表的所有元素。 实现如下: //此题在线用例还是无头链表→_→ //1<-2<-3 4->5 // p s q //保证三个指针指向相邻的三个节点 //健壮性: //1.传入空指针 //2.链表中只有一个节点 /*节点结构体定义 struct ListNode { int val; struct ListNod
2020-06-28
Data Structures and Algorithms
剑指Offer
剑指Offer——(14)链表中倒数第k个结点
题目描述: 输入一个链表,输出该链表中倒数第k个结点。 实现如下: //在线测试用例依旧是无头链表→_→ //最后一个节点定义为倒数第一个节点 //1->2->3->4->5 //p s // p s //eg.寻找倒数第3个节点 k-1=2 //要想一次遍历找到倒数第k个节点,关键在于最后一个节点与倒数第k个节点之间相差k-1个节点 //所以
2020-06-28
Data Structures and Algorithms
剑指Offer
剑指Offer——(13)调整数组顺序使奇数位于偶数前面
题目描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 实现如下: //很奇怪,竟然加了“保证奇数和奇数,偶数和偶数之间的相对位置不变。”这个条件→_→ //如果加了这个条件,目前想到的是开辟一个新的vector从array中遍历 //第一次遍历,将奇数push,第
2020-06-28
Data Structures and Algorithms
剑指Offer
剑指Offer——(12)数值的整数次方
题目描述: 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 实现如下: //方法一:循环 //此题不需要考虑计算后值溢出的情况,即不存在大数情况 //异常情况: //底数为0时->0.0 //指数为0时->1.0(数学定义) //指数为负数时,需要考虑先计算指数绝对值的结果,再取倒数 class Solution &
2020-06-28
Data Structures and Algorithms
剑指Offer
剑指Offer——(11)二进制中1的个数
题目描述: 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 实现如下: //方法一 //使测试数据x中只有一个1,逐步右移,使这个1从数值最低位到数值最高位与n依次比较 class Solution { public: int NumberOf1(int n) { int x = 1; int num = 0; for (int i =
2020-06-28
Data Structures and Algorithms
剑指Offer
剑指Offer——(10)矩形覆盖
题目描述: 我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 实现如下: //有两种放置方法 //1.左边竖着放一个,则还剩下2*(n-1) //2.左上角横着放一个,相应左下角也横着放一个,则还剩下2*(n-2) //f(n) = f(n-1) + f(n-2) //特殊情况:不存在时返回0;2*1时只有竖着放一种情
2020-06-28
Data Structures and Algorithms
剑指Offer
剑指Offer——(9)变态跳台阶
题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 实现如下: //有n级台阶 //若跳1级则剩下n-1级,跳法f(n-1) //若跳2级则剩下n-2级,跳法f(n-2) //若跳3级则剩下n-3级,跳法f(n-3) //若跳n-级则剩下1级,跳法f(n-(n-1)),即剩下一个台阶 //若跳n级则剩下0级,跳法f(0),
2020-06-28
Data Structures and Algorithms
剑指Offer
剑指Offer——(8)跳台阶
题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 实现如下: //两种跳跃方式:跳1级或跳2级 //假设有n级台阶,跳1级还剩余n-1级,跳2级还剩余n-2级,那剩余台阶继续选择跳法 //f(n) = f(n-1) + f(n-2) -> 斐波那契数列 //n = 1时,1 //n = 2时,2 class Solution
2020-06-28
Data Structures and Algorithms
剑指Offer
1
…
8
9
10
11
12
搜索
×
关键词