剑指offer
凤凰AI
算法工程师
展开
-
剑指Offer(Python语言)面试题41,42
面试题41:数据流中的中位数题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。# -*- coding:utf-8 -*-class Solution: def __init__(self): self.nums = []...原创 2019-11-20 21:31:54 · 193 阅读 · 0 评论 -
剑指Offer(Python语言)面试题39,40
面试题39:数组中出现次数超过一半的数字题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如,输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现5次,超过数组长度的一半,因此输出2。解法1:基于Partition函数的时间复杂度为O(n)的算法* 将数组进行排序,若是某个数字在数组中超过一半,*那么排序后的中间位...原创 2019-11-19 21:12:13 · 215 阅读 · 0 评论 -
剑指Offer(Python语言)面试题38
面试题38:字符串的排列题目:输入一个字符串,打印出该字符串中字符的所有排列。例如,输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca和cba。# -*- coding:utf-8 -*-class Solution: def Permutation(self, ss): # write code here ...原创 2019-11-12 14:01:39 · 213 阅读 · 0 评论 -
剑指Offer(Python语言)面试题36,37
面试题36:二叉搜索树与双向链表题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。比如,输入图中左边的二叉搜索树,则输出转换之后的排序双向链表。思路将指向左子节点的指针调整为链表中指向前一个节点的指针,原先指向右子节点的指针调整为链表中指向后一个节点的指针。中序遍历树中的每个节点。https://bl...原创 2019-11-10 22:46:42 · 206 阅读 · 0 评论 -
剑指Offer(Python语言)面试题33,34
面试题33:二叉搜索树的后序遍历序列题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。例如,输入数组{5,7,6,9,11,10,8},则返回true,因为这个整数序列是图二叉搜索树的后序遍历结果。如果输入的数组是{7,4,6,5},则由于没有哪棵二叉搜索树的后续遍历结果是这个序列,因此返回fa...原创 2019-11-06 18:40:19 · 190 阅读 · 0 评论 -
剑指Offer(Python语言)面试题32
面试题32:从上到下打印二叉树题目一:不分行从上到下打印二叉树从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如,输入图中的二叉树,则以此打印出8,6,10,5,7,9,11。 8 6 105 7 9 11思路:将数据存入一个容器队列,先进先出。Python代码:# -*- coding:utf-8 -*...原创 2019-11-05 21:03:23 · 271 阅读 · 0 评论 -
剑指Offer(Python语言)面试题30,31
面试题30:包含min函数的栈题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,push以及pop的时间复杂度都是o(1)。python代码:# coding=utf8'''题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push及pop的时间复杂度都是O(1)。''' ...原创 2019-11-02 13:47:22 · 268 阅读 · 0 评论 -
剑指Offer(Python语言)面试题27,28,29
面试题27:二叉树的镜像题目:请完成一个函数,输入一棵二叉树,该函数输出它的镜像。二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 ...原创 2019-11-01 20:36:12 · 169 阅读 · 0 评论 -
剑指Offer(Python语言)面试题24,25,26
面试题24:反转链表题目:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。思路1从头到尾遍历链表,每到一个新元素时,定义两个指针preNode和nextNode,preNode指向当前元素的上一个元素,nextNode指向当前元素的下一个元素。改变当前元素的指向为preNode,并将preNode和nextNode均向右移动一位。def ReverseLi...原创 2019-10-23 11:05:26 · 180 阅读 · 0 评论 -
剑指Offer(Python语言)面试题22,23
面试题22:链表中倒数第K个节点题目:输入一个链表,输出该链表中倒数第K个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如:一个链表有6个节点,从头节点开始,它们的值依次是1,2,3,4,5,6.这个链表的倒数第3个节点是值为4的节点。# -*- coding:utf-8 -*-# class ListNode:# def __init__...原创 2019-10-20 21:41:11 · 181 阅读 · 0 评论 -
剑指Offer(Python语言)面试题21
面试题21:调整数组顺序使奇数位于偶数前面题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。最简单方法是从头到尾扫描数组,每碰到一个偶数,拿出这个数字。总时间复杂度是o(n^2)。另一种方法是维护两个指针。def exchangOddEven(arr): i = 0 j = len(arr)-...原创 2019-10-18 22:08:59 · 153 阅读 · 0 评论 -
剑指Offer(Python语言)面试题18
删除链表的节点题目一:在o(1)时间内删除链表的节点给定单向链表的头指针和一个节点指针,定义一个函数在o(1)时间内删除该节点。思路:1,从头节点开始遍历2,把下一个节点的内容复制出来覆盖被删除节点的内容,然后把下一个节点删除。# Definition for singly-linked list.# class ListNode:# def __init__...原创 2019-10-17 11:25:03 · 190 阅读 · 0 评论 -
剑指Offer(Python语言)面试题12,13回溯法。14题动态规划贪婪算法
回溯法回溯法从解决问题的每一步的所有可能选项里系统地选择出一个可行的解决方案。回溯法非常适合由多个步骤组成的问题,并且每个步骤都有多个选项。当我们在每一步选择了其中一个选项时,就进入下一步,然后又面临新的选项。重复,直至达到最终状态。面试题12:题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左,右,...原创 2019-10-15 15:27:03 · 203 阅读 · 0 评论 -
剑指Offer(Python语言)面试题11
Q1:一个m长的绳子,切两刀,分三段,组成一个三角形的概率切n刀的时候公式如上。当n=2的时候概率为1/4。Q2:Bias?Variance?解决过拟合和欠拟合:https://blog.csdn.net/zhuimengshaonian66/article/details/83018809查找和排序二分查找(折半查找)二分查找法实质上是不断地将有序数据集进行对...原创 2019-10-08 21:54:37 · 299 阅读 · 0 评论 -
大众点评研发工程师2016笔试及答案
1.给定一个整数 sum,从有 N 个有序元素的数组中寻找元素 a,b,使得 a+b 的结果最接近 sum,最快的平均时间复杂度是:A.O(n)B.O(nlogn)C.O(n^2)D.O(logn)解析:答案:O(n)思想类似于两端向中间扫描1、设定两个指针P1、P2,分别指向数组开始和结尾,即P1指向最小值,P2指向最大值;2、计算 *P1+*P2 的值为 SUM,与 ...原创 2019-10-05 13:17:06 · 908 阅读 · 0 评论 -
剑指Offer(Python语言)面试题9,10
栈和队列面试题9:用两个栈实现队列题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入节点和在队列头部删除节点的功能。# -*- coding:utf-8 -*-class Solution: def __init__(self): self.stack1 = [] ...原创 2019-10-04 15:21:45 · 200 阅读 · 0 评论 -
剑指Offer(Python语言)面试题6,7,8
链表:用Python语言实现一个单链表#创建节点class ListNode: def __init__(self, data, next=None): self.data = data self.next = next#创建同节点head = ListNode(1)p = headfor i in range(2, 11): ...原创 2019-10-03 23:02:55 · 174 阅读 · 0 评论 -
剑指Offer(Python语言)
1.阅读下面的代码。请问输出的是什么?int GetSize(int data[]){ return sizeof(data);}int _tmain(int argc,_TCHAR* argv[]){ int data1[] = {1,2,3,4,5}; int size1 = sizeof(data1); int* data2 = dat...原创 2019-10-01 20:44:33 · 896 阅读 · 0 评论 -
剑指Offer(Python语言)面试题4,5
面试题4:二维数组中的查找在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解析:如二维数组1 2 8 9 2 4 9 12 4 7 10 13 ...原创 2019-10-02 18:17:25 · 175 阅读 · 0 评论