
算法面试
许洋_UCAS
中科院菜鸟硕士
关注:算法、机器学习、CV&NLP
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
剑指offer_面试题3 : 数组中重复的数字 ( python实现 )
数组中重复的数字 ( python实现 ) 题目一:找出数组中重复的数字 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。 时间复杂度为O(n)O(n)O(n),空间...原创 2019-06-25 21:28:15 · 525 阅读 · 0 评论 -
剑指offer_面试题23 : 链表中环的入口点( python实现 )
链表中环的入口点( python实现 ) 一、题目描述 题目:链表中环的入口点 如果一个链表中包含环,如何找出环的入口节点。 二、解题思路 暂略。(此处主要作为书中python实现补充) 三、代码实现 MeetingNode() 函数主要是用于判断链表中环的存在情况。若存在环,则返回快慢指针相遇的节点,若不存在,则返回 None。 def MeetingNode(pHead): ...原创 2019-07-18 11:37:37 · 326 阅读 · 0 评论 -
剑指offer_面试题39 : 数组中出现次数超过一半的数字( python实现 )
数组中出现次数超过一半的数字( python实现 ) 一、题目描述 题目:数组中出现次数超过一半的数字 数组中有一个数字的次数超过数组长度的一半,请找出这个数字。例如,输入一个长度为 9 的数组 {1, 2, 3, 2, 2, 2, 5, 4, 2}。由于数字 2 在数组中出现了 5 次,超过数组长度的一半,因此输出 2。 二、解题思路 暂略。(此处主要作为书中python实现补充) 三、...原创 2019-07-18 17:09:06 · 580 阅读 · 0 评论 -
剑指offer_面试题42 : 连续子数组的最大和( python实现 )
连续子数组的最大和( python实现 ) 一、题目描述 题目:连续子数组的最大和 输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为 O(n)O(n)O(n) 。 二、解题思路 暂略。(此处主要作为书中python实现补充) 三、代码实现 这里采用动态规划的思想实现如下: def FindGreatestSum...原创 2019-07-18 23:49:10 · 565 阅读 · 0 评论 -
算法面试题 :变态跳台阶( python实现 )
一只青蛙一次可以跳上1级台阶,也可以跳上2级...它也可以跳上 n 级,此时该青蛙跳上一个 n 级的台阶总共有多少种跳法?原创 2019-07-29 11:21:30 · 1163 阅读 · 2 评论 -
剑指offer_面试题56 :数组中数字出现的次数( python实现 )
一、题目描述 题目:数组中只出现一次的两个数 一个整型数组里除两个数字以外,其他数字都出现两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是 O(n)O(n)O(n) ,空间复杂度是 O(1)O(1)O(1) 。 例如,输入数组为 [2,4,3,6,3,2,5,5],输出 4 和 6 。 二、解题思路 暂略。(此处主要作为书中python实现补充) 三、代码实现 def Fin...原创 2019-07-25 17:04:00 · 496 阅读 · 0 评论 -
剑指offer_面试题58 :翻转字符串( python实现 )
一、题目描述 题目:翻转字符串 输入一个英文句子,翻转句子中单词的顺序,但单词内字符串的顺序不变。为简单起见,标点符号和普通字母一样处理 。 例如,输入字符串为“I am a student.”,输出 “student. a am I” 。 二、解题思路 暂略。(此处主要作为书中python实现补充) 三、代码实现 这里的代码在 牛客网剑指offer:翻转单词顺序列 测试通过的代码...原创 2019-07-26 11:24:51 · 468 阅读 · 0 评论 -
剑指offer_面试题58_二 :左旋转字符串( python实现 )
一、题目描述 题目:左旋转字符串 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。 例如,输入字符串为“abcdefg”和2,输出为“cdefgab”。 二、解题思路 暂略。(此处主要作为书中python实现补充) 三、代码实现 这里的代码在牛客网剑指offer:左旋转字符串已测试通过,具体如下: # -*- coding:...原创 2019-07-26 12:06:33 · 374 阅读 · 0 评论 -
手撕算法面试题集锦(剑指offer)_python实现
python实现原创 2019-08-16 22:26:23 · 3299 阅读 · 1 评论 -
剑指offer_面试题16 : 数值的整数次方( python实现 )
数值的整数次方( python实现 ) 一、题目描述 题目:数值的整数次方 实现函数 double Power(double base, int exponent),求 base 的 exponent 次方。不得使用库函数,同时不需要考虑大数问题。 二、解题思路 暂略。(此处主要作为书中python实现补充) 三、代码实现 题目中明确给出,不需要考虑大数问题,即不考虑溢出问题。不过,我...原创 2019-07-01 01:07:27 · 568 阅读 · 0 评论 -
剑指offer_面试题11 : 旋转数组的最小数字( python实现 )
旋转数组的最小数字( python实现 ) 一、题目描述 题目:查找旋转数组的最小数字 把一个数组最开始的若干元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 {3,4,5,1,2} 为 {1,2,3,4,5,} 的一个旋转,该数组的最小值为1。 二、解题思路 暂略。(此处主要作为书中python实现补充) 三、代码实现 ...原创 2019-06-27 00:24:26 · 719 阅读 · 3 评论 -
剑指offer_面试题10 : 斐波那契数列( python实现 )
斐波那契数列(题目一) ( python实现 ) 一、题目描述 题目:求斐波那契数列的第 n 项。 写一个函数,输入 n ,求Fibonacci数列的第n项。斐波那契数列定义如下: f(n)={0n=01n=1f(n−1)+f(n−2)n>1 f(n)=\left\{ \begin{aligned} &0 & n=0\\ &1 ...原创 2019-06-26 23:00:04 · 688 阅读 · 0 评论 -
剑指offer_面试题4 : 二维数组中的查找 ( python实现 )
二维数组中的查找 ( python实现 ) 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 例如下面的二维数组就是每行、每列都递增排序。如果在这个数组中查找数字7,则返回true;如果查找数字5,由于数组不含有该数字,则返回false。 1 2 8 9 ...原创 2019-06-25 22:01:09 · 363 阅读 · 0 评论 -
剑指offer_面试题5 : 替换空格 ( python实现 )
替换空格 ( python实现 ) 题目:请实现一个函数,将一个字符串中的空格替换成“%20”。 例如,当字符串为 We Are Happy。则经过替换之后的字符串为 We%20Are%20Happy。 在Python编程中,可以直接采用以下两种方式: def replaceBlank(myString): return "%20".join(myString.split(" ")) ...原创 2019-06-25 22:51:32 · 350 阅读 · 0 评论 -
剑指offer_面试题6 : 从尾到头打印链表 ( python实现 )
从尾到头打印链表 ( python实现 ) 题目:输入一个链表的头节点,从尾到头反过来打印出每个节点的值。 其实,在这链表操作中,从头到尾打印一遍只需要一个简单的遍历便可以做到。然而在这里,遍历的顺序是从头到尾,而打印的顺序是从尾到头,这就是典型的 “先进后出”,因此,可采用 栈 或着 递归 实现。 先用 python 简单实现一个链表,如下。关于链表更多的操作 python 实现见 ...原创 2019-06-25 23:53:23 · 1208 阅读 · 0 评论 -
剑指offer_面试题9 : 用两个栈实现队列 ( python实现 )
用两个栈实现队列 ( python实现 ) 一、题目描述 用两个栈实现一个队列,分别实现在队列尾部插入节点和在队列头部删除节点的功能。 这里,简单的采用列表 (List) 以及其 list.append(),list.pop() 方法模拟栈。当然,在python中,实现一个栈 (Stack) 类,可参考Link。 二、解题思路 暂略。(此处主要作为书中python实现补充) 三、代码实...原创 2019-06-26 12:43:00 · 590 阅读 · 0 评论 -
剑指offer_面试题21 :调整数组顺序使奇数位于偶数前面( python实现 )
调整数组顺序使奇数位于偶数前面( python实现 ) 一、题目描述 题目:调整数组顺序使奇数位于偶数前面 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 二、解题思路 暂略。(此处主要作为书中python实现补充) 三、代码实现 def reorderOddEcen(myList): if len(myList...原创 2019-07-01 21:11:59 · 581 阅读 · 0 评论 -
剑指offer_面试题22 : 链表中倒数第k个节点( python实现 )
链表中倒数第k个节点( python实现 ) 一、题目描述 题目:链表中倒数第k个节点 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第一个节点。例如,一个链表有6个节点,从头节点开始,他们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。 二、解题思路 暂略。(此处主要作为书中python实现补充) 三、代...原创 2019-07-01 23:18:57 · 644 阅读 · 0 评论 -
剑指offer_面试题24 : 反转链表( python实现 )
反转链表( python实现 ) 一、题目描述 题目:反转链表 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 二、解题思路 暂略。(此处主要作为书中python实现补充) 三、代码实现 这里的链表是单向链表,为程序更直观的展示出来,首先我们先定义一个节点类,如下。 class LinkedListNode(): def __init__ (self,...原创 2019-07-02 00:09:19 · 483 阅读 · 0 评论 -
剑指offer_面试题25 : 合并两个排序的链表( python实现 )
合并两个排序的链表( python实现 ) 一、题目描述 题目:合并两个排序的链表 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然增序的。。 二、解题思路 暂略。(此处主要作为书中python实现补充) 三、代码实现 这里的链表是单向链表,为程序更直观的展示出来,首先我们先定义一个节点类,如下。 class LinkedListNode(): def __init...原创 2019-07-02 00:42:58 · 946 阅读 · 0 评论 -
剑指offer_面试题26 : 树的子结构( python实现)
树的子结构( python实现) 一、题目描述 题目:树的子结构 输入两棵二叉树A和B,判断B是不是A的子结构。 二、解题思路 暂略。(此处主要作为书中python实现补充) 三、代码实现 这里,首先用 python 定义一个二叉树节点类,如下。 class BinaryTreeNode(object): def __init__(self, value = None, lef...原创 2019-07-02 10:04:18 · 453 阅读 · 0 评论