面试题
文章平均质量分 62
phyllisyuell
学习交流,做一枚认真的程序媛!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
python:用单链表判断字符串是不是回文数
参考博客:https://blog.youkuaiyun.com/whm114336793/article/details/79996943思想:使用快慢指针,当快指针走的终点的时候,慢指针在中间的位置,把中间到最后的位置开始倒序链表。其中要分奇偶考虑,如果是奇数,slow = slow—>next。然后将前半部分和后半部分分别从两头开始比较元素是否相等。此算法时间复杂度O(N),空间复杂度O(1)...原创 2018-10-09 10:07:34 · 959 阅读 · 0 评论 -
面试-排序-(二)插入排序
一、插入排序:每一趟将一个待排序的元素,按其关键字的大小插入到已排序序列的适当位置,直到全部插入完成。常见的插入排序有以下三种。1、直接插入排序1)过程:直接插入排序是一种最简单的排序方法,其过程就是依次将每个元素插入到一个有序的序列中去。不过它有个缺点,就是当我们的数据基本有序时,每次插入都要移动位置,此时的插入效率是很低的。为了解决这种情况,又产生了拆半插入排序,希尔排序。工作...原创 2019-03-01 16:18:34 · 343 阅读 · 0 评论 -
面试-排序-(一)交换排序
一、交换排序:两两比较待排序的关键字,并交换不满足次序要求的那些偶对,直到全部满足为止。常见的交换排序有冒泡排序和快速排序1.冒泡排序1)过程:比较相邻元素,使关键字较小的元素交换至关键字较大的元素之上,使得经过一次冒泡排序后,关键字最小的元素到达最顶端,接着找到第二小的元素,依次类推。冒泡排序示意图2)python实现:def sort1(a): lengt...原创 2019-03-01 16:25:24 · 336 阅读 · 0 评论 -
面试-排序-(三)选择排序
一、选择排序:每步从待排序的元素中选出关键字最小的元素,顺序放在已经排序的元素序列的最后,直到全部排完为止。常见的选择排序有简单选择排序和堆排序1.简单选择排序1)过程:假设元素存放在R[0..n-1]之中,其中R[0..i-1]是有序的,R[i..n-1]是无序的,且有序的所有元素均小于无序的元素。需将R[i]添加到[0..i-1]之中,使R[0..i]有序。查找的过程是每一趟从R[...原创 2019-03-01 22:25:42 · 403 阅读 · 0 评论 -
面试-查找-线性表的查找
一、线性表的查找算法包括顺序查找,折半查找和分块查找1、折半查找1)过程:折半查找又称二分查找,要求线性表有序。在一个有序序列中,先确定中间点的位置mid ,然后将待查的k值与中间点数据比较,若相等则查找成功并返回该位置......2)python实现:不递归:#二分查找:输入一个list,待查找的item;输出待查找元素的位置def search(list1,item):...原创 2019-03-02 10:45:09 · 254 阅读 · 0 评论 -
面试-查找-树表的查找
一、树表的查找:主要包括二叉排序树,平衡二叉树,B树1、二叉排序树1)定义:二叉排序树(BST;Binary Search Tree)又称二叉查找树。或者为空树,或者是具有以下性质:(1)若它的左子树不为空,则左子树所有节点的值小于根结点,(2)若它的右子树不为空,则根结点的值小于所有右子树结点的值(3)它的左右子树叶分别为二叉排序树2)python实现:#二叉树...原创 2019-03-02 11:37:32 · 240 阅读 · 0 评论 -
每日一题——编程:连续子数组的最大和leedcode53
题目:给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。解法一:暴力破解法 时间复杂度O(N^3) 超时这是我们最容易想到的,通过枚举暴力破解,但是时间复杂度过高,算法运行超时。def ...原创 2019-04-11 15:45:20 · 376 阅读 · 0 评论
分享