
算法
Idea King
勤练带来力量
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二叉树遍历的实现 - python
文章目录原创 2020-06-11 19:52:59 · 218 阅读 · 0 评论 -
剑指offer系列-简单总结
文章目录链表相关的算法一般用递归或指针(1个或多个)来解决树相关的算法一般用递归或队列来解决原创 2020-06-04 23:27:08 · 373 阅读 · 0 评论 -
剑指offer系列-面试题60. n个骰子的点数(python)
文章目录1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献[1] 剑指offer丛书[2] 剑指Offer——名企面试官精讲典型编程题原创 2020-06-04 18:46:49 · 354 阅读 · 0 评论 -
剑指offer系列-面试题67. 把字符串转换成整数 (python)
文章目录1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献[1] 剑指offer丛书[2] 剑指Offer——名企面试官精讲典型编程题原创 2020-06-03 23:50:53 · 434 阅读 · 0 评论 -
剑指offer系列-面试题63. 股票的最大利润(python)
文章目录1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献[1] 剑指offer丛书[2] 剑指Offer——名企面试官精讲典型编程题原创 2020-06-03 22:27:23 · 418 阅读 · 0 评论 -
剑指offer系列-面试题51. 数组中的逆序对(python)
文章目录1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献[1] 剑指offer丛书[2] 剑指Offer——名企面试官精讲典型编程题原创 2020-06-03 18:18:48 · 439 阅读 · 0 评论 -
剑指offer系列-面试题56 - I. 数组中数字出现的次数 (python)
文章目录1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献[1] 剑指offer丛书[2] 剑指Offer——名企面试官精讲典型编程题原创 2020-06-03 17:22:48 · 266 阅读 · 0 评论 -
剑指offer系列-面试题64. 求1+2+…+n(python)
文章目录1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献[1] 剑指offer丛书[2] 剑指Offer——名企面试官精讲典型编程题原创 2020-06-03 11:53:06 · 579 阅读 · 0 评论 -
剑指offer系列-面试题62. 圆圈中最后剩下的数字(python)
文章目录1. 题目2. 解题思路2.0 暴力法2.1 数学法3. 代码实现3.0 暴力法3.1 数学法4. 总结5. 参考文献1. 题目0,1,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。2. 解题思路这道题是简单,我是万万没想到的。其实本题是著名的约瑟夫环问题。2.0 暴力法就原创 2020-06-02 22:35:12 · 279 阅读 · 0 评论 -
剑指offer系列-面试题58 - I. 翻转单词顺序(python)
文章目录1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献[1] 剑指offer丛书[2] 剑指Offer——名企面试官精讲典型编程题原创 2020-06-02 22:32:06 · 308 阅读 · 0 评论 -
剑指offer系列-面试题57. 和为s的两个数字(python)
文章目录1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献[1] 剑指offer丛书[2] 剑指Offer——名企面试官精讲典型编程题原创 2020-06-02 20:09:16 · 289 阅读 · 0 评论 -
剑指offer系列-面试题45 - 把数组排成最小的数(python)
文章目录1. 题目2. 解题思路2.1 常规思路2.2 书中的思路3. 代码实现4. 总结5. 参考文献1. 题目输入一个正整数,把数组中里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如,输入数组{3,32,321},则打印出这3个数字能排成的最小数字是321323。2. 解题思路2.1 常规思路2.2 书中的思路3. 代码实现4. 总结有没有发现最近...原创 2020-06-02 18:12:54 · 343 阅读 · 0 评论 -
剑指offer系列-面试题52. 两个链表的第一个公共节点两个链表的 (python)
文章目录1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献[1] 剑指offer丛书[2] 剑指Offer——名企面试官精讲典型编程题原创 2020-06-02 17:18:30 · 281 阅读 · 0 评论 -
剑指offer系列-面试题50. 第一个只出现一次的字符 (python)
文章目录1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献[1] 剑指offer丛书[2] 剑指Offer——名企面试官精讲典型编程题原创 2020-06-02 15:19:42 · 306 阅读 · 0 评论 -
剑指offer系列-面试题44 - 数字序列中某一位的数字(python)
文章目录1. 题目1. 题目数字以0123456789101112131415······的格式序列化到一个字符序列中。在这个序列中,第5位(从0开始计数)是5,第19位是4,等等。请写一个函数,球任意第n位对应的数字。...原创 2020-06-02 14:12:20 · 464 阅读 · 0 评论 -
剑指offer系列-面试题49. 丑数(python)
文章目录1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献[1] 剑指offer丛书[2] 剑指Offer——名企面试官精讲典型编程题原创 2020-06-01 22:46:31 · 263 阅读 · 0 评论 -
剑指offer系列-面试题48. 最长不含重复字符的子字符串(python)
文章目录1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献[1] 剑指offer丛书[2] 剑指Offer——名企面试官精讲典型编程题原创 2020-06-01 19:55:53 · 656 阅读 · 0 评论 -
剑指offer系列-面试题47. 礼物的最大价值(python)
文章目录1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献[1] 剑指offer丛书[2] 剑指Offer——名企面试官精讲典型编程题原创 2020-06-01 16:36:04 · 701 阅读 · 0 评论 -
剑指offer系列-面试题46. 把数字翻译成字符串(python)
文章目录1. 题目2. 解题思路2.1 递归2.2 迭代(动态规划)3. 代码实现3.1 递归3.2 字符串遍历3.3 数字求余4. 总结5. 参考文献1. 题目给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。2. 解题思路详情见 面试题46. 把数字翻译成字符串(动态规划,清晰图解)2.1 递归自顶向下举例原创 2020-06-01 12:04:53 · 381 阅读 · 0 评论 -
剑指offer系列-面试题65. 不用加减乘除做加法(python)
文章目录1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献1. 题目写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。2. 解题思路详情见 禁止套娃,如何用位运算完成加法? 这个讲解的比较清晰,我都能看懂,你也可以的。这道题思路就是实现计算机的加法。计算机底层中是如何对两个二进制数做加法的呢?凑巧之前在《编码》一书中看见了过程,但是当自己来写的不听使唤了。在计算机中,有一种机器叫做半加器,有一种机器叫做全加器。在计算机中,将加原创 2020-05-30 10:55:49 · 405 阅读 · 0 评论 -
剑指offer系列-面试题-面试题55 - II. 平衡二叉树(python)
文章目录1. 题目2. 解题思路2.0 递归2.1 迭代3. 代码实现3.0 递归3.1 迭代4. 总结5. 参考文献1. 题目输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。2. 解题思路详情见 面试题55 - II. 平衡二叉树(从底至顶、从顶至底,清晰图解)2.0 递归整棵树是平衡二叉树,则每一个子树都是平衡二叉树,很明显可以使用递归。2.1 迭代3. 代码实现3.0 递归# Definiti原创 2020-05-29 11:15:41 · 292 阅读 · 0 评论 -
剑指offer系列-面试题41-数据流中的中位数(python)
文章目录1. 题目2. 解题思路3. 代码实现3.1 思路13.2 思路23.3 思路34. 总结5. 参考文献1. 题目如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。2. 解题思路我的思路看到这个题目之后,我有两个思路:思路1:对这n个...原创 2020-05-28 22:20:38 · 189 阅读 · 0 评论 -
剑指offer系列-面试题-20 - 表示数值的字符串 (python)
文章目录1. 题目2. 解题思路3. 代码实现3.1 不好的解法一:只适用于单线程3.2 不好的解法二:适用于多线程,但效率不高3.3 可行的解法4. 总结5. 参考文献1. 题目请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、“5e2”、"-123"、“3.1416"及”-1E-16"都表示数值,但"12e"、“1a3.14”、“1.2.3”、"±5"...原创 2020-05-28 22:17:42 · 184 阅读 · 0 评论 -
剑指offer系列-面试题-19 - 正则表达式匹配(python)
文章目录1. 题目2. 解题思路3. 代码实现3.1 不好的解法一:只适用于单线程3.2 不好的解法二:适用于多线程,但效率不高3.3 可行的解法4. 总结5. 参考文献1. 题目请实现一个函数用来匹配包含’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,二’'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"...原创 2020-05-28 22:14:08 · 307 阅读 · 0 评论 -
剑指offer系列-面试题-面试题66. 构建乘积数组(python)
文章目录1. 题目2. 解题思路2.1 暴力法2.2 两次遍历3. 代码实现3.0 暴力法3.1两次遍历4. 总结5. 参考文献1. 题目给定一个数组 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]。不能使用除法。2. 解题思路2.1 暴力法2.2 两次遍历详情见 面试题66. 构建乘积数组(表格分区,清晰图解)暴力法之所以失败,就是因为重复了很多计算,所以一定要利用之前原创 2020-05-28 21:30:03 · 275 阅读 · 0 评论 -
剑指offer系列-面试题-54. 二叉搜索树的第k大节点(python)
文章目录1. 题目2. 解题思路3. 代码实现3.1 渣渣写法3.2 大佬写法3.3 迭代4. 总结5. 参考文献1. 题目给定一棵二叉搜索树,请找出其中第k大的节点。2. 解题思路详情见 面试题54. 二叉搜索树的第 k 大节点(中序遍历 + 提前返回,清晰图解)采用一个变量记录当前节点是第几大的节点。由于是二叉搜索树,所以最右节点为最大,然后是其父节点,然后是其左子节点,因此应该以 右-根-左的顺序遍历树3. 代码实现3.1 渣渣写法# Definition for a bin原创 2020-05-28 17:25:44 · 740 阅读 · 0 评论 -
剑指offer系列-面试题-面试题68 - II. 二叉树的最近公共祖先 (python)
文章目录1. 题目2. 解题思路3. 代码实现3.0 路径比较3.1 递归4. 总结5. 参考文献1. 题目给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”2. 解题思路详情见 面试题68 - II. 二叉树的最近公共祖先(后序遍历 DFS ,清晰图解)关键点是二叉搜索树,研究发现有如下规律。原创 2020-05-28 15:04:47 · 373 阅读 · 0 评论 -
剑指offer系列-面试题-68 - I. 二叉搜索树的最近公共祖先 (python)
文章目录1. 题目2. 解题思路3. 代码实现3.1 迭代3.2 递归4. 总结5. 参考文献1. 题目给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”2. 解题思路详情见 面试题68 - I. 二叉搜索树的最近公共祖先(迭代 / 递归,清晰图解)关键点是二叉搜索树,研究发现有如下规律。原创 2020-05-28 13:51:35 · 379 阅读 · 0 评论 -
剑指offer系列-面试题-面试题55 - I. 二叉树的深度(python)
文章目录1. 题目2. 解题思路2.1 递归2.2 广度优先遍历(BFS)3. 代码实现3.1 递归3.2 BFS4. 总结5. 参考文献1. 题目输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。2. 解题思路详情见 面试题55 - I. 二叉树的深度(后序遍历、层序遍历,清晰图解)2.1 递归从根节点来看,整个树的深度=max(左子树的深度,右子树的深度) + 1,就这样递归下去,递归的基线条件就是节点为No原创 2020-05-27 18:51:41 · 391 阅读 · 0 评论 -
剑指offer系列-面试题-59 - I.-滑动窗口的最大值 (python)
文章目录1. 题目2. 解题思路2.1 暴力法2.2 优化2.3 单调队列3. 代码实现3.1 暴力法3.2 优化3.3 单调队列4. 总结5. 参考文献1. 题目给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。2. 解题思路2.1 暴力法当确定了滑动窗口的范围之后,每次都去遍历这个滑动窗口获得最大值。时间复杂度为O(K)。2.2 优化其实只要发现一点就能降低时间复杂度:如果前一个滑动窗口的最大值仍然在当前滑动窗口中,那么只需要比较前一个滑动窗口的最大值和原创 2020-05-27 14:39:23 · 318 阅读 · 0 评论 -
剑指offer系列-面试题-17 - 打印1到最大的n位数 (python)
文章目录1. 题目2. 解题思路3. 代码实现3.1 不好的解法一:只适用于单线程3.2 不好的解法二:适用于多线程,但效率不高3.3 可行的解法4. 总结5. 参考文献1. 题目给定一个数字N,打印从1到最大的N位数。输入每个输入文件仅包含一组测试样例。对于每个测试案例,输入一个数字N(1<=N<=5)。 输出 对应每个测试案例,依次打印从1到最大的N位数。样例输入...原创 2020-05-27 12:55:38 · 146 阅读 · 0 评论 -
剑指offer系列-面试题- 53- 2 - 0~n-1中缺失的数字 (python)
文章目录1. 题目2. 解题思路2. 1暴力法2. 2 二分法3. 代码实现3.1 暴力法3.24. 总结5. 参考文献1. 题目一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。2. 解题思路2. 1暴力法直接遍历0~n-1的数组,判断0~n-1中的每个元素是否都在该排序数组中出现,返回没出现的值。2. 2 二分法遇到排序数组中的搜索问题,应当第一时间想到二分法。举原创 2020-05-26 20:29:23 · 292 阅读 · 0 评论 -
剑指offer系列-面试题- 53-1 - 在排序数组中查找数字 (python)
文章目录1. 题目2. 解题思路2. 1暴力法2. 2 二分法3. 代码实现3.1 暴力法3.24. 总结5. 参考文献1. 题目统计一个数字在排序数组中出现的次数。例如,输入排序数组{1, 2, 3, 3, 3, 3, 4, 5}和数字3,由于3在这个数组中出现了4次,因此输出4。2. 解题思路2. 1暴力法直接遍历,记录该数字的出现次数。2. 2 二分法遇到排序数组中的搜索问题,应当第一时间想到二分法。要得到该数字出现的次数,只需要确定该数字出现的左边界和和右边界。详情请看原创 2020-05-26 20:29:11 · 244 阅读 · 0 评论 -
剑指offer系列-面试题-61 - 扑克牌中的顺子 (python)
文章目录1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献1. 题目从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。2. 解题思路3. 代码实现3.14. 总结5. 参考文献[1] 剑指offer丛书[2] 剑指Offer——名企面试官精讲典型编程题...原创 2020-05-26 20:28:55 · 432 阅读 · 1 评论 -
剑指offer系列-面试题-12 - 矩阵中的路径(python)
文章目录1. 题目2. 解题思路3. 代码实现3.1 不好的解法一:只适用于单线程3.2 不好的解法二:适用于多线程,但效率不高3.3 可行的解法4. 总结5. 参考文献1. 题目请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。...原创 2020-05-26 20:27:34 · 243 阅读 · 0 评论 -
剑指offer系列-面试题-13 - 机器人的运动范围(python)
文章目录1. 题目2. 解题思路3. 代码实现3.1 不好的解法一:只适用于单线程3.2 不好的解法二:适用于多线程,但效率不高3.3 可行的解法4. 总结5. 参考文献1. 题目???2. 解题思路这道题也就是我们常说的实现单例模式。3. 代码实现3.1 不好的解法一:只适用于单线程3.2 不好的解法二:适用于多线程,但效率不高3.3 可行的解法4. 总结5. 参考文献...原创 2020-05-26 20:25:22 · 225 阅读 · 0 评论 -
剑指offer系列-面试题-14 - 剪绳子 (python)
文章目录1. 题目2. 解题思路3. 代码实现3.1 不好的解法一:只适用于单线程3.2 不好的解法二:适用于多线程,但效率不高3.3 可行的解法4. 总结5. 参考文献1. 题目给你一根长度为n的绳子,请把绳子剪成m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0], k[1], ······k[m]。请问k[0]xk[1]x······xk[m]可能的最大乘积...原创 2020-05-26 17:28:23 · 683 阅读 · 0 评论 -
剑指offer系列-面试题-16 - 数值的整数次方 (python)
文章目录1. 题目2. 解题思路3. 代码实现3.1 不好的解法一:只适用于单线程3.2 不好的解法二:适用于多线程,但效率不高3.3 可行的解法4. 总结5. 参考文献1. 题目给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。2. 解题思路这道题也就是我们常说的实现单例模式。3. 代码实现3.1 不好的解法一:只适用于...原创 2020-05-25 16:04:33 · 151 阅读 · 0 评论 -
剑指offer系列-面试题-15 - 二进制中1的个数 (python)
文章目录1. 题目2. 解题思路3. 代码实现3.1 不好的解法一:只适用于单线程3.2 不好的解法二:适用于多线程,但效率不高3.3 可行的解法4. 总结5. 参考文献1. 题目输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。样例输入3 4 5 -1样例输出1 2 322. 解题思路这道题也就是我们常说的实现单例模式。3. 代码实现3.1 不好的解法一:只...原创 2020-05-25 14:14:25 · 313 阅读 · 0 评论 -
剑指offer系列-面试题-11 - 旋转数组的最小数字 (python)
文章目录1. 题目2. 解题思路3. 代码实现3.1 不好的解法一:只适用于单线程3.2 不好的解法二:适用于多线程,但效率不高3.3 可行的解法4. 总结5. 参考文献1. 题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减序列的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。...原创 2020-05-25 13:51:53 · 167 阅读 · 0 评论