
剑指offer算法题程序(python)
冷咖啡离开杯垫
不积跬步,无以至千里。
展开
-
剑指offer【6】 从尾到头打印链表
题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。python递归求解:class ListNode: def __init__(self,elem,next_=None): self.elem=elem self.next_=next_#从尾到头打印链表class printReverse: def print_...原创 2018-02-28 19:11:57 · 120 阅读 · 0 评论 -
循环有序数组中查找某个数
循环有序数组中查找某个数利用二分查找,一个循环有序数组从中间切分,一定分成一个有序数组和一个循环有序数组,由于循环有序数组不容易判断,我们只需判断哪一边是有序数组以及target是不是在有序数组这一边。# 循环有序数组查找某个数def find(ls, target): if not ls or not target: return -1 low =...原创 2019-02-23 15:15:22 · 1030 阅读 · 0 评论 -
最小的k个数(第k小的数)
1. 利用快排的思想,由于每次只选择左右部分中的一部分,因此时间复杂度为O(n).# -*- coding:utf-8 -*-class Solution: # (O(n)复杂度) def GetLeastNumbers_Solution(self, tinput, k): # write code here length = len(tin...原创 2019-02-22 13:49:36 · 3074 阅读 · 0 评论 -
丑数
# -*- coding:utf-8 -*-class Solution: def GetUglyNumber_Solution(self, index): # write code here if index < 1: return 0 ugly = [1] #第一个丑数 m2 = 0 # ...原创 2019-02-21 23:36:29 · 157 阅读 · 0 评论 -
数字在排序数组中出现的次数
题目描述统计一个数字在排序数组中出现的次数。思路分析为了让时间复杂度较低,考虑用二分查找。分别用两次二分查找,找到目标值第一次出现时的下标和最后一次出现时的下标。注意边界条件。(如:目标值只在数组的首或尾出现了1次)# -*- coding:utf-8 -*-class Solution: def GetNumberOfK(self, data, k): ...原创 2019-01-25 13:45:33 · 150 阅读 · 0 评论 -
滑动窗口的最大值
题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,...原创 2019-01-24 21:10:04 · 134 阅读 · 0 评论 -
剑指offer【14】动态规划 剪绳子
def maxProductAfterCutting_solution(length): if length <2: #因为要求至少剪成两段 return -1 if length ==2: return 1 if length ==3: return 2 product={} product[1]=1...原创 2018-03-27 17:09:39 · 643 阅读 · 0 评论 -
剑指offer【55】求二叉树的深度
先序遍历解法:class BintNode: def __init__(self,data,left=None,right=None): self.data=data self.left=left self.right=rightclass Solution: def depth(self,tree): ...原创 2018-02-28 19:30:07 · 136 阅读 · 0 评论 -
剑指offer【7】 重建二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}递归思想:class BintNode: def __init__(self,data,left=None,right=None): self.data=d...原创 2018-02-28 19:23:39 · 149 阅读 · 0 评论 -
反转链表的循环和递归方式(python)
# 循环class Solution: # 返回ListNode def ReverseList(self, pHead): # write code here left = None cur = pHead while cur: right = cur.next #保存 ...原创 2019-02-20 10:43:46 · 335 阅读 · 0 评论