![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
destiny_python
目前正从事数据分析工作,并在不断精进中
展开
-
剑指offer python语言解法
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。# -*- coding:utf-8 -*-class Solution: # array 二维列表 def Find(self, target, array): # write code here原创 2017-07-12 14:31:59 · 552 阅读 · 0 评论 -
剑指Offer:表示数值的字符串
个人感觉这种题目用正则表达式匹配最简单,也就两三行代码就能解决,但是呢,好像并不能充分锻炼我们的逻辑思维能力,这个问题本身不难,但边界条件,特殊输入很多,要一一考虑清楚,下面给出一个一种一种情况考虑排除的解法,有点繁琐,但有注释,整体逻辑还是很清晰的。# -*- coding:utf-8 -*-class Solution: # s字符串 def isNumeric(self原创 2017-08-04 10:30:09 · 995 阅读 · 0 评论 -
剑指Offer:数组中出现次数超过一半的数字
# -*- coding:utf-8 -*-class Solution: def MoreThanHalfNum_Solution(self, numbers): # write code here if (numbers == None or len(numbers) <= 0): return 0 resul原创 2017-07-26 21:27:50 · 244 阅读 · 0 评论 -
剑指Offer:复杂链表的复制
# -*- coding:utf-8 -*-#class RandomListNode:# def __init__(self, x):# self.label = x# self.next = None# self.random = None"""分三步:第一步:复制每个节点,如:复制节点A得到A1,将A1插入节点A后面第二步:原创 2017-07-26 10:00:21 · 1099 阅读 · 0 评论 -
剑指Offer:机器人的运动范围
地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?# -*- coding:utf-8 -*-clas原创 2017-08-08 16:27:15 · 296 阅读 · 0 评论 -
剑指Offer:数据流中的中位数
如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。看别人用两个堆,一个最大堆,一个最小堆,说的挺在理,其实理解起来也不难,下面呢提供一种简单粗暴的方法,但是如果细细探究其时间复杂度,其实是O(n),但排序用的是内建函数,真实运行速度比较快,话不多说,上代码原创 2017-08-08 14:21:49 · 442 阅读 · 0 评论 -
剑指Offer:二叉搜索树的第K个结点
题目描述:给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 24 6 8 中,按结点数值大小顺序第三个结点的值为4。我们知道,由于二叉搜索树的中序遍历是排序的,所以我们可以先中序遍历整个二叉树,并把它存成一个列表,然后返回该列表的第K个值就行了# -*- coding:utf-8 -*-# class TreeNode:# def __ini原创 2017-08-08 10:11:52 · 241 阅读 · 0 评论 -
输入一个链表,输出该链表中倒数第k个结点。
'''输入一个链表,输出该链表中倒数第k个结点'''#常规解法,考虑了代码的鲁棒性,考虑了空指针,K为0,K大于链表的长度class Solution: def FindKthToTail(self, head, k): # write code here if (head == None or k == 0): return N原创 2017-07-16 11:13:46 · 1393 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。# -*- coding:utf-8 -*-class Solution: def reOrderArray(self, array): # write code here if原创 2017-07-16 09:05:28 · 358 阅读 · 0 评论 -
剑指Offer:链表中环的入口结点
第一步:先找到环中的一个点第二步:确定环中有几个元素,比如n个第三步:让第一个指针先走n步,第二个指针再从头走,两指针相遇即为入口结点class Solution: def EntryNodeOfLoop(self, pHead): # write code here meetingNode = self.MeetingNode(pHead)原创 2017-08-04 11:38:05 · 421 阅读 · 0 评论