剑指Offer
上进的小菜鸟
好好学习天天向上
展开
-
剑指Offer练习及其解析(python代码):21-28(双指针,递归)
一.剑指 Offer 22. 链表中倒数第k个节点 双指针法: 1.先找到初始第k个数,前指针指向head,后指针指向第k节点 2.俩个指针同时向后移动,直到到达链表尾 代码: #My solution #32ms:98; 13.6mb: 100 # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.ne原创 2020-06-27 17:11:58 · 263 阅读 · 0 评论 -
《剑指offer》练习及解析(C++代码)13-16
一.剑指 Offer 13. 机器人的运动范围 解法: 1.回溯法 一种搜索方法,每次选择一个方向向前搜索,直到到达最优目标或确定无法达到目标时,后退重新向未选择的方向前进。 用二维数组记录是否走过此位置,且每次只需向下或向右行进即可 代码: //My solution 回溯 //24ms:6.5 ;10mb:100, O(n) class Solution { public: const vector<vector<int>> step={{1,0},{0原创 2020-06-21 18:09:57 · 475 阅读 · 0 评论 -
《剑指offer》练习及解析(C++代码)10-12(动态规划方法;二分法;回溯算法)
1.10-I,10-II 其中跳台阶问题可以转换成求斐波那契数列问题,即: 当前台阶的跳法总数目=前1个台阶(用1次跳1台阶方法)的跳法数目+前2个台阶(用1次跳2台阶方法)的跳法数目 F(n) = F(n-1)+ F(n-2) 因此,有两种解法: 1.递归方法 将此问题,转换成俩个子问题,递归求解 缺点:重复计算一次跳一个台阶算法次数 性能:时间复杂度:O(n^2) 空间复杂度:O(1) 代码: //Solution class Solution { public:原创 2020-06-20 16:26:58 · 250 阅读 · 0 评论 -
《剑指offer》练习及解析(C++代码)17-18,20-21(有限状态转换机法,双指针法)
一.剑指Offer 17. 打印从1到最大的n位数 //My solution //12ms:67; 10.7mb:100 class Solution { public: vector<int> printNumbers(int n) { int endn=pow(10,n); vector<int> re(endn-1); for(int i=1;i<endn;i++) {原创 2020-06-23 22:00:15 · 296 阅读 · 0 评论