数据结构与算法
YHJ
你有找到为之奋不顾身的事吗?
展开
-
【算法修炼之道】——算法分析的相关问题
【问题24】求解如下递归表达式的时间复杂度;解答:(代入法) 规律: 【问题26】下面这个函数的运行时间是多少?解析: 【问题27】求下面程序的时间复杂度。解析: 【问题28】下面给出了一个时间复杂度为T(n)的递归函数;用迭代方法证明T(n)=Θ(n^3);解析: ...原创 2018-08-30 15:51:25 · 172 阅读 · 0 评论 -
【算法修炼之道】——算法分析
算法是什么?其形式化的定义是:算法就是用一条接一条的指令来解决给定的问题;注意:不需要证明算法的每一步; 为什么要算法分析???——》减少时间和空间开销;如何比较算法?——》从执行时间、执行语句数以及理想的解决方案;执行时间、执行语句数???——》不是好的评价指标???——》时间于特定的计算机有关,而语句数又于编程语言有关; 接下来,来点干货!这些是常见的增长...原创 2018-08-30 15:20:24 · 195 阅读 · 0 评论 -
【算法训练之道】——双链表
双向链表什么是双向???——》也就是它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱;在这前面,我们已经学会了单向链表;那么双向链表与单向链表相比较具有哪些特点:在数据结构中具有双向指针;——》最后一个结点的链接地址上,单向链表是null,而双向链表是表头的链接地址 插入(或删除)数据的时候需要考虑前后方向的操作; 那么双向链表相对于单向具有单向链表有优缺点???——...原创 2018-08-28 20:02:16 · 131 阅读 · 0 评论 -
Longest Substring Without Repeating Characters-------【leetcode】
/** * 问题:给定一个字符串,找到最长子字符串的长度而不重复字符。 */ public int lengthOfLongestSubstring(String s) { //1、不重复(hashmap数组) HashMap<Character,Integer> map = new HashMap<>(); //max:旧值 in...原创 2019-01-26 11:55:06 · 104 阅读 · 0 评论 -
快速排序--------【Java】
问:你了解Quick Sort吗?给我说下你对快排的理解。答:快排的话,其实也就是选择一个基准数,并通过一趟排序将要排序的数据分割成独立的两部分;这两部分有一部分是比另一部分的所有数据都要小的;这就是我对快排的概念的理解;但是快排不是稳定的,而且它的时间复杂度在对坏的情况下为O(n^2),平均时间复杂度为O(n*lg^n);问:看来你对快排还是有点了解的;那么我假设被排序的数列中有N个数;...原创 2018-08-27 17:16:30 · 536 阅读 · 0 评论 -
【算法修炼之道】——冒泡排序
冒泡排序冒泡排序(又被称为气泡排序或泡沫排序)的基本思路???——》用两个循环条件语句嵌套;外循环是从大局来看???——》也就是遍历整个数组;那内循环呢???——》其实也就是从”外循环遍历到的地址“开始比较之后的元素,而且也是遍历的比较相邻的元素; 【例子】以数列{20,40,30,10,60,50}为例,演示它的冒泡排序过程(如下图) 该题代码实现:/**...原创 2018-08-27 16:50:04 · 299 阅读 · 0 评论 -
【算法修炼之道】——希尔排序
二、希尔排序(Shell Sort)什么是希尔排序???是为了元素排序而产生的,但是它用的方式和其他排序方式是不一样的;希尔排序实质上是一种分组插入方法; 那它的基本思路???——》先选取一个小于n的整数d(称为增量),然后把排序表中的n个记录分为d个子表,从下标为0的记录开始,间隔为d的记录组成一个子表, 在各个的子表内进行直接插入排序; 基本思路代码的实现:/...原创 2018-08-27 16:32:48 · 234 阅读 · 0 评论 -
【算法修炼之道】——滑动窗口的最大值
题目描述:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5};针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1},{2,[3,4,2],6,2,5,1}, {2,3,[4,2,6]...转载 2019-02-01 17:10:55 · 808 阅读 · 0 评论 -
【算法修炼之道】——二叉搜索树的后序遍历序列
题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 题目解析1、主要意思就是说给你一个序列,你确认下这个序列到底是不是一个二叉搜索树的后序遍历结果;2、这里稍微讲下,二叉搜索树的概念:根节点为参考,比根节点大的数据在右侧,比根节点小的数据在左侧,叶子节点左子节点比父节点小,右子...原创 2019-02-01 17:09:57 · 228 阅读 · 0 评论 -
【算法修炼之道】——求1+2+3+...+n
题目描述求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 题目解析求1到n的和,重点是不能使用乘除、for、while、if、else、switch、case等关键字以及条件判断的语句(A?B:C),那么显然这道题目难度提升了一个台阶,如果没做过这个类型的题目,可能会心中一揪,两眼一...原创 2018-08-30 11:26:55 · 500 阅读 · 0 评论 -
【算法修炼之道】——队列
什么是队列(Queue)???——》是一种线性存储结构,也就是存储数据的存储结构;但是注意啦!!!——》不是数据结构;那么队列有什么特点???——》队列中数据是按照"先进先出(FIFO, First-In-First-Out)或后进后出"方式进出队列的; 队列只允许在"队首"进行删除操作,而在"队尾"进行插入操作; 讲完了特点,那就到队列的基本操作啦!!!——》入队和出队...原创 2018-08-28 11:36:32 · 188 阅读 · 0 评论 -
【算法修炼之道】——栈
栈(stack)是什么???——》是一种线性存储结构,也是存储数据的简单数据结构(简称为“数据的存储结构”);那有什么特色之处???——》特点:栈中数据是按照"后进先出(LIFO, Last In First Out)或先进先出(FILO)"方式进出栈的; 向栈中添加/删除数据时,只能从栈顶进行操作; 那实现栈的定义需要什么操作???——》栈通常包括的三种操作:push...原创 2018-08-28 10:49:52 · 175 阅读 · 0 评论