![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法和面试
文章平均质量分 58
idotc
这个作者很懒,什么都没留下…
展开
-
十大排序算法
目录1.选择排序1.选择排序a. 选择排序的最好、最坏、平均情况下,其时间复杂度都是:O(n*n)b. 空间复杂度是O(1)c. 选择排序算法不是稳定性排序算法。这里再解释一下稳定性排序是指:2个相等的元素,在排序前的相对前后位置和排序完成后的,相对前后位置保持一致。选择排序为啥不是稳定性排序呢,举个例子:数组 6、7、6、2、8,在对其进行第一遍循环的时候,会将第一个位置的6与后面的2进行交换。此时,就已经将两个6的相对前后位置改变了。因此选择排序不是稳定性排序算法。def select_so原创 2021-05-30 22:24:54 · 251 阅读 · 1 评论 -
编程之法面试和算法心得-1.1字符串的旋转
本博客的创作的算法来源于July创作的《编程之法面试和算法心得》一书,特此声明。我再学习此书的同时在结合了自己的一些理解,用python实现了一遍。在后面的系列博客中,不再重述,直接进入正题。一、题目描述给定一个字符串,要求字符串前面若干个字符移到字符串的尾部。例如,将字符串“abcdef”的前三个字符移到字符串的尾部,则得到“defabc”。请写一个函数实现该功能。二、解法一:蛮力移位...原创 2018-11-22 16:48:34 · 301 阅读 · 0 评论 -
编程之法面试和算法心得-1.3字符串的全排列
一、题目描述输入一个字符串,打印该字符串中字符的所有排列。例如输入字符串“abc”,则输出“a”,“b”,“c”,所能够排列的所有字符串:“abc”,“acb”,“bac”,“bca”,“cab”,“cba”。二、解法一:递归实现递归的实现可以想成从局部到整体。字符串的全排列,最小的局部就是两个字符。两个字符不动输出一次,在交换输出一次,得到两个结果。多个字符的全排列,归根结底都是两个字符的...原创 2018-11-24 21:21:38 · 153 阅读 · 0 评论 -
编程之法面试和算法心得-1.2字符串的包含
一、题目描述给定一个长字符串a和一段字符串b。请问,如何最快判断短字符串b中的所有字符是否都包含在a中?请编写StringContain(a, b)实现此功能。为简单讲明思想,假设输入的字符串都是大写的字母。如a=“ABCD”,b=“BAD”,则答案为True;a=“ABCD”,b=“BCE”,则答案为False。二、解法一:蛮力轮询可以将b中的字符逐个查询是否在a中,但是该法的时间复杂度太...原创 2018-11-23 15:08:35 · 170 阅读 · 0 评论 -
编程之法面试和算法心得-1.4字符串转换成整数
一、题目描述输入一个由数字组成的字符串,请把它们转换成整数并输出。如输入字符串为“123”,输出整数123。python化成整数直接可以int(str),现在是自己实现这个函数。二、解法这道题看起来比前面的的几道题都简单许多,只需要把输入字符串的各个字符的acsii码减去‘0’的acsii即可。从左向右扫描,依次乘10加当前字符转义的int。参考代码如下:def StrToInt(s):...原创 2018-11-26 21:48:14 · 207 阅读 · 0 评论 -
编程之法面试和算法心得-1.5回文判断
1、题目描述给定一个字符串,如何判断这个字符串是否是回文串?2、解法一:两头往中间扫给定一个字符串,判断对应的首尾字符是否相等。每一次循环首尾各往中间移动一位,直到循环结束。参考代码如下:def IsPalindrome(s, n): s= list(s) if (n == 0): return False for i in range(n): ...原创 2018-11-27 23:48:23 · 214 阅读 · 0 评论 -
有技巧的算法题
有技巧的算法题1. 快速矩阵幂运算计算递推数列1. 快速矩阵幂运算计算递推数列题目:题目:递推数列满足规则:a[n] = a[n-1] + a[n-3] + a[n-4]输入数列为:nums求第n位的数要求复杂度为: nlogn如果只是简单的从0开始循环求n次,时间复杂度是O(n)。可以将规则写成矩阵形式,如下图所示。快速矩阵幂类似二分法,算法实现代码如下:"""题目:递推数...原创 2019-09-19 20:01:22 · 436 阅读 · 0 评论