06 2018 档案

摘要:算法题1 上台阶问题(牛客网) 解答 算法题2 小球的距离(牛客网) 解答 算法通3 集合求并集和排序 (牛客网)解答 算法题4 求幸运数(牛客网) 解答 算法题5 求不同进制表示的位数之和的均值(牛客网) 解答 算法题6 保卫方案 (牛客网)解答 算法题7 寻找下一个排列 (LeetCode 37 阅读全文
posted @ 2018-06-27 11:14 Fintech带你飞 阅读(617) 评论(0) 推荐(0)
摘要:面试54题: 题目:二叉搜索树的第K大节点 题:给定一颗二叉搜索树,请找出其中的第k小的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。 解题思路:中序遍历 解题代码: 阅读全文
posted @ 2018-06-27 10:47 Fintech带你飞 阅读(859) 评论(0) 推荐(0)
摘要:面试51题: 题目:数组中的逆序对 题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 输入描述: 题目保证输入的数组中没有的相同的数字 阅读全文
posted @ 2018-06-27 10:13 Fintech带你飞 阅读(1282) 评论(0) 推荐(0)
摘要:面试3题: 题:数组中重复的数字 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数 阅读全文
posted @ 2018-06-27 08:45 Fintech带你飞 阅读(3863) 评论(0) 推荐(0)
摘要:面试52题: 题目:两个链表的第一个公共节点 题:输入两个链表,找出它们的第一个公共节点。 解题思路: ①蛮力法:在第一个链表上顺序遍历每个节点,每遍历到一个节点,就在第二个链表上顺序遍历每个节点,直到找到第二个链表上有节点和第一个链表上的节点一样停止。(O(mn)) ②如果从两个链表的尾部开始往前 阅读全文
posted @ 2018-06-26 21:18 Fintech带你飞 阅读(909) 评论(0) 推荐(0)
摘要:面试50题: 题目:第一个只出现一次的字符 题:在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置。 解题思路一:利用Python特性 解题思路二:自定义一个哈希表,键值key为字符,值value为该字符出现的次数。 题目拓展:字符流中第一个只 阅读全文
posted @ 2018-06-26 20:00 Fintech带你飞 阅读(1218) 评论(0) 推荐(0)
摘要:面试49题: 题:丑数 题目:把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 解题代码一:时间效率不高,对每一个数都需要判断它是不是丑数(需要执行求余和除法操作) 解题 阅读全文
posted @ 2018-06-26 11:51 Fintech带你飞 阅读(851) 评论(0) 推荐(0)
摘要:面试46题: 题目:把数字翻译成字符串 题:给定一个数字,我们按照如下规则把它翻译为字符串:0翻译成“a”,1翻译成“b”,……,11翻译成“1”,……,25翻译成“z”。一个数字可能有多个翻译。例如:12258有5种不同的翻译,分别是“bccfi”、“bwfi”、“bczi”、“mcfi”和“mz 阅读全文
posted @ 2018-06-26 10:14 Fintech带你飞 阅读(1080) 评论(0) 推荐(0)
摘要:面试48题:题目:最长不含重复字符的子字符串 题:请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长字符串的长度。假设字符串中只包含‘a’-‘z’的字符。例如,在字符串“arabcacfr”中,最长的不含重复字符的子字符串是“acfr”,长度为4。 解题代码一: 阅读全文
posted @ 2018-06-25 21:23 Fintech带你飞 阅读(794) 评论(0) 推荐(0)
摘要:面试47题:题:礼物的最大价值 题目:在一个mxn的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于0),你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格,直到到达棋盘的右下角。给定一个棋盘及其上面的礼物,请计算你最多能拿多少价值的礼物? 解题思路:这是一个典型的能用动 阅读全文
posted @ 2018-06-25 20:22 Fintech带你飞 阅读(869) 评论(0) 推荐(0)
摘要:面试45题: 题:把数组排成最小的数 题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 解题思路一:暴力破解:先求所有数字的全排列,然后求最小值 解题代码: 解题代码 阅读全文
posted @ 2018-06-25 16:46 Fintech带你飞 阅读(1086) 评论(0) 推荐(0)
摘要:面试43题: 题目:1~n整数中1出现的次数 题:输入一个整数n,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1的数字有1,10,11,12一共出现了5次。 解题思路一:直接累加1~n中每个整数中1出现的次数。 解题代码一: 解题思路二:同上,只不过先把1~n 阅读全文
posted @ 2018-06-25 15:38 Fintech带你飞 阅读(930) 评论(0) 推荐(0)
摘要:面试42题: 题目:连续子数组的最大和 题:输入一个整形数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n) 解题思路:在数组里从前向后遍历,记录下每次的“当前累加子数组和”和“当前的最大子数组和”(其本身包含“动态规划”的思想,详 阅读全文
posted @ 2018-06-25 14:45 Fintech带你飞 阅读(970) 评论(0) 推荐(0)
摘要:面试41题: 题目:数据流中的中位数 题:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 解题思路一:直接法,排序后求中位数 解题代码: 解题思路二:使用最大堆 阅读全文
posted @ 2018-06-25 14:27 Fintech带你飞 阅读(761) 评论(0) 推荐(0)
摘要:面试40题: 题目:最小的k个数 题:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 解题代码一: 解题代码二: 解题代码三:另:自己实现快速排序 阅读全文
posted @ 2018-06-25 09:59 Fintech带你飞 阅读(1180) 评论(0) 推荐(0)
摘要:面试39题: 题目:数组中出现次数超过一半的数字 题:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 解题思路:根据数组特点找出时间复杂 阅读全文
posted @ 2018-06-25 09:34 Fintech带你飞 阅读(1073) 评论(0) 推荐(0)
摘要:面试38题: 题:字符串的排列 题目:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 解题思路:把字符串看成两部分:第一部分是它的第一个字符;第二部分是后面的所有字符。 递 阅读全文
posted @ 2018-06-24 19:40 Fintech带你飞 阅读(1241) 评论(0) 推荐(0)
摘要:面试37题: 题:序列化二叉树 题目:请实现两个函数,分别用来序列化和反序列化二叉树 解题思路:首先来看二叉树的序列化,二叉树的序列化就是采用前序遍历二叉树输出节点,再碰到左子节点或者右子节点为None的时候输出一个特殊字符”#”。对于反序列化,就是针对输入的一个序列构建一棵二叉树,我们可以设置一个 阅读全文
posted @ 2018-06-24 17:44 Fintech带你飞 阅读(937) 评论(0) 推荐(0)
摘要:面试36题: 题:二叉搜索树与双向链表 题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 解题思路一:由于输入的一个二叉搜索树,其左子树大于右子树的值,这位后面的排序做了准备,因为只需要中序遍历即可,将所有的节点保存到一个列表, 阅读全文
posted @ 2018-06-24 16:00 Fintech带你飞 阅读(1165) 评论(0) 推荐(0)
摘要:面试35题: 题目:复杂链表的复制 题:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 解题思路一:“Python作弊法” 解题代码 阅读全文
posted @ 2018-06-24 15:30 Fintech带你飞 阅读(1102) 评论(0) 推荐(0)
摘要:面试34题: 题目:二叉树中和为某一值的路径 题:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 解题代码: 阅读全文
posted @ 2018-06-24 11:13 Fintech带你飞 阅读(1183) 评论(0) 推荐(0)
摘要:面试33题:题:二叉搜索树的后序遍历序列 题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 解题思路:递归 解题代码: 阅读全文
posted @ 2018-06-24 10:25 Fintech带你飞 阅读(1028) 评论(0) 推荐(0)
摘要:面试32题: 题目:从上到下打印二叉树 题:不分行从上到下打印二叉树 解题代码: 题目拓展一:分行从上到下打印二叉树。 题:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 解题代码一:同剑指offer 解题代码二:代码更简洁。 解题代码三:cur、last记录,思路同二 题目拓展二 阅读全文
posted @ 2018-06-23 16:49 Fintech带你飞 阅读(1295) 评论(0) 推荐(0)
摘要:面试31题: 题目:栈的压入、弹出元素 题:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹 阅读全文
posted @ 2018-06-23 16:28 Fintech带你飞 阅读(986) 评论(0) 推荐(0)
摘要:面试30题: 题目:包含min函数的栈 题:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。在该栈中,调用min、push、pop的时间复杂度都是O(1) 解题思路:1)如果每次压入新元素时,再调整让新元素位于栈顶,这种思路不能保证最后压入栈的元素最先出栈,因此这个数据结构已经 阅读全文
posted @ 2018-06-23 15:49 Fintech带你飞 阅读(846) 评论(0) 推荐(0)
摘要:面试29题: 题目:顺时针打印矩阵(同LeetCode 螺旋矩阵打印) 题:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14 阅读全文
posted @ 2018-06-23 15:14 Fintech带你飞 阅读(1160) 评论(0) 推荐(0)
摘要:面试28题: 题目:对称的二叉树题: 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的 解题思路: 可以定义一种遍历算法,先遍历右子节点再遍历左子节点。注意,我们必须把遍历二叉树时遇到的空指针考虑进来。 解题代码: 阅读全文
posted @ 2018-06-19 21:37 Fintech带你飞 阅读(890) 评论(0) 推荐(0)
摘要:面试27题: 题目:二叉树的镜像 题:操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 解题代码: 阅读全文
posted @ 2018-06-19 21:15 Fintech带你飞 阅读(1120) 评论(0) 推荐(0)
摘要:面试26题: 题目:树的子结构 题:输入两棵二叉树A和B,判断B是不是A的子结构。 解题思路:递归,注意空指针的情况。 解题代码: 另外,如果树节点的val值是double的时候,需要自定义一个equal函数,当num1和num2相差小于1e-07时即可认为是相等的,详见剑指offer P151 阅读全文
posted @ 2018-06-19 11:57 Fintech带你飞 阅读(1094) 评论(0) 推荐(0)
摘要:面试25题:题目:合并两个排序的链表 题:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 解题思路:递归,并需注意对空链表单独处理。 解题代码: 阅读全文
posted @ 2018-06-19 11:22 Fintech带你飞 阅读(966) 评论(0) 推荐(0)
摘要:面试24题: 题目:反转链表 题:输入一个链表,反转链表并输出反转后链表的头节点。 解题思路:注意反转时出现断裂现象,定义3个指针,分别指向当前遍历到的节点pNode、它的前一个节点pPrev及后一个节点pNext。 解题代码: 阅读全文
posted @ 2018-06-19 10:53 Fintech带你飞 阅读(1088) 评论(0) 推荐(0)
摘要:面试23题: 题目:如果一个链表中包含环,如何找出环的入口节点? 解题分析:其实此题可以分解为三个题目:1)如何判断一个链表中是否包含环?2)如何找到环的入口节点?3)如何得到环中节点的数目? 解决此题:可以设置两个指针,一快一慢。 1.两个指针一个fast、一个slow同时从一个链表的头部出发 f 阅读全文
posted @ 2018-06-19 10:37 Fintech带你飞 阅读(975) 评论(0) 推荐(0)
摘要:面试22题: 题目:链表中倒数第k个节点 题:输入一个链表,输出该链表中倒数第k个结点。 解题思路:为了实现只遍历链表一次就能找到倒数第k个节点,我们可以定义两个指针。让第一个指针先向前走k-1步,第二个指针保持不动;从第k步开始,第二个指针也开始从链表的头指针开始遍历。由于两个指针的距离保持在k- 阅读全文
posted @ 2018-06-19 09:30 Fintech带你飞 阅读(953) 评论(0) 推荐(0)
摘要:面试19题: 题目:正则表达式匹配 题:请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是 阅读全文
posted @ 2018-06-18 22:20 Fintech带你飞 阅读(1236) 评论(0) 推荐(0)
摘要:面试20题: 题目:表示数值的字符串 题:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。 解题思路 阅读全文
posted @ 2018-06-18 21:22 Fintech带你飞 阅读(998) 评论(0) 推荐(0)
摘要:面试21题: 题目:调整数组的顺序使奇数位于偶数前面 题一:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 解题思路:使用两个指针,第一个指针初始化指向数组的第一个数字,从前向后移动,遇到偶数就停下来;第二个指针指向数组的最后一个 阅读全文
posted @ 2018-06-18 20:31 Fintech带你飞 阅读(1013) 评论(0) 推荐(0)
摘要:面试18题: 题目:删除链表中的节点 题一:在O(1)时间内删除链表节点。给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点。 解题思路:我们要删除节点i,先把i的下一个节点j的内容复制到i,然后把i的指针指向节点j的下一个节点。此时再删除节点j,其效果等同于把节点i删除了。 阅读全文
posted @ 2018-06-18 19:25 Fintech带你飞 阅读(1374) 评论(0) 推荐(0)
摘要:面试17题: 题目:打印从1到最大的n位数 题:输入数字n,按顺序打印出从1到最大的n位十进制数,比如输入3,则打印出1、2、3一直到最大的3位数999. 解题思路:需要考虑大数问题,这是题目设置的陷阱。可以把问题转换成数字排列问题,用递归让代码更简洁。 参见剑指offer P114 解题代码: 阅读全文
posted @ 2018-06-18 16:21 Fintech带你飞 阅读(1402) 评论(0) 推荐(0)
摘要:面试16题: 题目:数值的整数次方 题:实现函数double Power(double base, int exponent),求base的exponent次方、不得使用库函数,同时不需要考虑大数问题。 解题思路:主题考虑底数为0.0,指数为负数的情况,此时可以利用全局变量指出g_InvalidIn 阅读全文
posted @ 2018-06-18 11:34 Fintech带你飞 阅读(1279) 评论(0) 推荐(0)
摘要:面试14题: 题目:剪绳子 题:给你一根长度为n的绳子,请把绳子剪成m段(m,n都是整数,且n>1,m>1),每段绳子的长度记为k[0],k[1],k[2],...,k[m]。请问k[0]*k[1]*...*k[m]可能的最大乘积是多少?例如,当绳子的长度为8时,我们把它剪成长度分别为2,3,3的三 阅读全文
posted @ 2018-06-18 10:35 Fintech带你飞 阅读(1339) 评论(0) 推荐(0)
摘要:面试15题: 题目:二进制中1的个数 题:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 解题思路一: 最佳方法:把一个整数减去1,再和原整数做“与运算”,会把该整数最右边的1变成0。那么一个整数的二进制中表示中有多少个1,就可以进行多少次这样的操作。 解题代码: 注意:如果该整数 阅读全文
posted @ 2018-06-18 10:01 Fintech带你飞 阅读(1258) 评论(0) 推荐(0)
摘要:面试13题: 题目:机器人的运动范围 题:地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能 阅读全文
posted @ 2018-06-17 21:11 Fintech带你飞 阅读(1243) 评论(0) 推荐(0)
摘要:面试12题: 题目:矩阵中的路径 题:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f 阅读全文
posted @ 2018-06-17 20:26 Fintech带你飞 阅读(1751) 评论(0) 推荐(0)
摘要:面试11题: 题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0 阅读全文
posted @ 2018-06-15 11:14 Fintech带你飞 阅读(1521) 评论(0) 推荐(0)
摘要:面试10题: 题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39 n=0时,f(n)=0 n=1时,f(n)=1 n>1时,f(n)=f(n-1)+f(n-2) 解题代码一:基于循环(推荐) 代码如下: 解题代码二:基于递归(不太推荐,效率低,可能不能通过 阅读全文
posted @ 2018-06-15 10:03 Fintech带你飞 阅读(1487) 评论(0) 推荐(0)
摘要:面试9题: 题目:用两个栈实现队列 题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 解题思路:有两个栈stackA,stackB,A为入栈,B为出栈的。入栈时,直接进入A即可,出栈时,先判断B中是否有元素,如果没有肯定不能pop(),应将A中所有元素倒 阅读全文
posted @ 2018-06-12 16:53 Fintech带你飞 阅读(1453) 评论(0) 推荐(0)
摘要:面试8题: 题目:二叉树的下一个节点 题目描述:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 解题思路:详见剑指offer P65页 解题代码: 阅读全文
posted @ 2018-06-12 16:29 Fintech带你飞 阅读(1450) 评论(0) 推荐(0)
摘要:面试7题: 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 解题思路:递归实现 解题代码: 阅读全文
posted @ 2018-06-12 15:42 Fintech带你飞 阅读(1841) 评论(0) 推荐(0)
摘要:面试6题: 题目:从尾到头打印链表 输入一个链表,从尾到头打印链表每个节点的值。 解题代码: 阅读全文
posted @ 2018-06-12 11:26 Fintech带你飞 阅读(1859) 评论(0) 推荐(0)
摘要:面试5题: 题目:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 方法一: 方法二: 方法三: 剑指offer解法:①先计算源字符串数组长度,并统计空格数量②新字符串数组长度=源数组长度+2* 阅读全文
posted @ 2018-06-12 11:00 Fintech带你飞 阅读(1929) 评论(0) 推荐(1)
摘要:面试4题: 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 解题代码一:二层遍历,时间并不是最优 # -*- coding:utf-8 -*- class Solution: 阅读全文
posted @ 2018-06-12 10:28 Fintech带你飞 阅读(2183) 评论(0) 推荐(1)
摘要:剑指offer面试题内容 第2章 面试需要的基础知识 面试题1:赋值运算符函数 面试题2:实现Singleton模式 解答 面试题3:数组中重复的数字 解答 面试题4:二维数组中的查找 解答 面试题5:替换空格 解答 面试题6:从尾到头打印链表 解答 面试题7:重建二叉树 解答 面试题8:二叉树的下 阅读全文
posted @ 2018-06-11 10:53 Fintech带你飞 阅读(27190) 评论(0) 推荐(2)
摘要:面试59题: 题目:队列的最大值。 题目一:滑动窗口的最大值。 给定一个数组和滑动窗口的大小,请找出所有滑动窗口里的最大值。例如:如果输入数组为[2,3,4,2,6,2,5,1]及滑动窗口大小为3,那么一共存在6个滑动窗口,它们的最大值分别为[4,4,6,6,6,5] 解题方法:直接上Python的 阅读全文
posted @ 2018-06-10 22:05 Fintech带你飞 阅读(1019) 评论(0) 推荐(0)
摘要:面试58题: 题目:翻转字符串 题:牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的 阅读全文
posted @ 2018-06-10 21:17 Fintech带你飞 阅读(920) 评论(0) 推荐(0)
摘要:面试57题: 题目:和为s的数字 题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正 阅读全文
posted @ 2018-06-10 15:44 Fintech带你飞 阅读(947) 评论(0) 推荐(0)
摘要:面试56题: 题目:数组中数字出现的次数 题:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 解题思路: 方法一:异或运算,详见《剑指offer》P274 代码: 方法二:利用python自带的counter库 阅读全文
posted @ 2018-06-10 15:14 Fintech带你飞 阅读(1026) 评论(0) 推荐(0)
摘要:面试55题: 题目:二叉树的深度 题:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 解题思路: ①如果一棵树只有一个节点,它的深度为1 ②如果根节点只有左子树而没有右子树,那么树的深度是左子树的深度加1 同样,如果根节点只有 阅读全文
posted @ 2018-06-10 13:02 Fintech带你飞 阅读(984) 评论(1) 推荐(0)
摘要:面试53题: 题目:统计一个数字在排序数组中出现的次数。 思路:二分查找法,分别找到此数字在排序数组中第一次和最后一次出现的位置,然后次数等于两个位置之差加1。 时间复杂度:O(log n) 解题代码: 阅读全文
posted @ 2018-06-10 11:08 Fintech带你飞 阅读(1051) 评论(0) 推荐(0)
摘要:面试63题 题目:股票的最大利润 题:假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可获得的最大利润是多少?例如,一只股票在某些时间节点的价格为{9,11,8,5,7,12,16,14}。 如果我们能在价格为5的时候买入并在价格为16时卖出,则能获得最大的利润为11. 解决代码: 阅读全文
posted @ 2018-06-08 17:31 Fintech带你飞 阅读(648) 评论(0) 推荐(0)
摘要:面试62题: 题目:圆圈中最后剩下的数字 题:0,1,...,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。 解题思路:约瑟夫环问题,可以根据数学规律找出高效的解法,具体如下,详见剑指offer。 解题代码: 阅读全文
posted @ 2018-06-08 17:08 Fintech带你飞 阅读(882) 评论(0) 推荐(0)
摘要:面试60题 题目:把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 解决代码: 阅读全文
posted @ 2018-06-08 16:23 Fintech带你飞 阅读(641) 评论(0) 推荐(0)
摘要:面试61题: 题目:LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不 阅读全文
posted @ 2018-06-05 22:19 Fintech带你飞 阅读(718) 评论(0) 推荐(0)
摘要:面试68题: 题目:求树中两个节点的最低公共祖先 待解决。。。 阅读全文
posted @ 2018-06-04 15:32 Fintech带你飞 阅读(557) 评论(0) 推荐(0)
摘要:面试67题: 题目: 链接:https://www.nowcoder.com/questionTerminal/1277c681251b4372bdef344468e4f26e?commentTags=Python来源:牛客网将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0 阅读全文
posted @ 2018-06-04 15:26 Fintech带你飞 阅读(1012) 评论(0) 推荐(0)
摘要:面试66题: 题目:构建乘积数组 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。 根据剑指offer思路 基本解法: 优化代码如下: 阅读全文
posted @ 2018-06-04 12:21 Fintech带你飞 阅读(694) 评论(0) 推荐(0)
摘要:题目65题:不用加减乘除做加法。 解法一:Python特性 解法二:剑指offer思路分析:三步走策略:①只做各位相加不进位(可以用异或来处理,和异或结果相同)②进位:可以想象为两个数先做位与运算,然后左移一位③把前两个步骤的结果相加,重复前两步,直到不产生进位为止。在Python中做位运算,需要做 阅读全文
posted @ 2018-06-04 11:12 Fintech带你飞 阅读(775) 评论(0) 推荐(0)
摘要:题目:64题 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 解法一:利用Python特性 解法二:利用两个函数,一个函数充当递归函数的角色,另一个函数处理终止递归的情况,如果对n连续进行两次反运算,那么 阅读全文
posted @ 2018-06-03 23:31 Fintech带你飞 阅读(1001) 评论(0) 推荐(0)
摘要:来源LeetCode 131: 题目: 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。 返回 s 所有可能的分割方案。 示例: 解题代码: 阅读全文
posted @ 2018-06-03 19:53 Fintech带你飞 阅读(363) 评论(0) 推荐(0)