剑指offer
超人睡不着也变无奈
这个作者很懒,什么都没留下…
展开
-
剑指offer(5)用两个栈实现队列
** 用两个栈实现队列 ** 显然有毒…好好的队列就队列…栈就栈…非要用栈来实现队列…黑人问号脸??? 言归正传 队列:先进先出 栈:后进先出,先进后出 so 队列和栈的关系… 可以很肤浅的认为类似于负号的关系… 队列先进先出,栈先进后出,颠倒了次序 那次序被颠倒两次,不就正常了 所以一组数据进来12345 进到栈出来变成54321 再把54321进栈…再出来…就是12345了 就ojbk了 OK...原创 2019-01-20 16:10:45 · 105 阅读 · 0 评论 -
剑指offer(6)旋转数组的最小数字
找一个数组里头最小的数字 最简单的方法就是O(N)啦 一个一个找过去就行了 我想到的好点的方法是logn 使用二分查找 这样可以利用已经给的信息:数组前一部分是递增的后半部分是递减的 目标:找到递增递减突变的点 如果可以画出函数求导图的话…那个点就很明显… 不扯了…进入正题… 所以使用二分查找 这里和普通二分查找不同的地方是,普通二分查找要找的是一模一样的元素 此处要找的是突变点 记start(s...原创 2019-01-20 16:51:26 · 95 阅读 · 0 评论 -
剑指offer(6)跳台阶
题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 一开始看到脑阔疼 有点没思路 后面想到排列组合…发现行得通 各位看官没有思路的现在也可以往排列组合这边想想 … 简单的说 问的是总共跳台阶的方式有几种 假设n个台阶 显然每次都跳一个台阶的话.就只有一种跳法 如果有一次跳了两个台阶的话,就有C N-1 1种跳法即(n-1)...原创 2019-01-21 00:04:26 · 115 阅读 · 0 评论 -
剑指offer(9)变态跳台阶
这题不能用8跳台阶的方法了 或许也可以? 比较麻烦 引进一种新思路 类似于斐波那契数列 总共有N个台阶,如果第一次跳1个台阶 ,则方案有f(n-1)种 如果第一次跳2个台阶,则方案有f(n-2)种 以此类推 如果一次跳n个台阶,则方案有f(n-n)设定为1种 总共只有1个台阶,则方案只有1种 总共2个台阶,方案有2种 然后递归把 ok 以上就是思路 代码自己写写把不难 ...原创 2019-01-21 12:57:21 · 125 阅读 · 0 评论 -
剑指offer(25)复杂链表的复制
题目看我半天 终于知道它要干啥 平时复制链表,只需要连到下一个就行了,现在多了个random,就不大好确定random是指向哪个了 思路: 先按普通的单链表复制一遍,这里需要遍历一次链表,遍历的同时用python的dict记录下label和node的关系 比如说原链表是12345 35#2# 第一次复制,得到了12345对吧 同时在dict中保存了1:node1,2:node2这样的信息 然后再从...原创 2019-01-28 15:36:30 · 97 阅读 · 0 评论 -
剑指Offer(二十六):二叉搜索树与双向链表
思路: 先用中序遍历把树遍历一遍 得到的结果就是从小到大排好序的序列 然后再在这个序列上,连接好左右指针就完事了 class Solution: def __init__(self): self.nodelist=[] def inorder_traversal(self,root): if(root.left!=None): ...原创 2019-01-28 16:46:16 · 99 阅读 · 0 评论 -
剑指offer(33)丑数
哇有点难受 这两天做的什么连接字符串,最大字段和,丑数什么的都不会做 各种上网看大佬的解法 不是自己想出来的就是会郁闷 丑数: 只有2,3,5质因子 所以下一个丑数肯定是之前存在的丑数乘上2 or 3 or 5 第一个丑数是1 乘数因子是2,3,5 算法: 建立三个指针two three five最初都指向第一个丑数 然后 新丑数new=min(2* two指向的丑数,3three指向的丑数,5f...原创 2019-01-29 23:01:54 · 101 阅读 · 0 评论