• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • YouClaw
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
_Java小菜盘
博客园    首页    新随笔    联系   管理    订阅  订阅

随笔分类 -  数据算法

寻找面积最大的凸多边形

摘要:问题:给出一系列的坐标点,请找出哪些点可以围成一个面积最大的凸多边形? 思路:(1)先寻找最左边的坐标点,这样剩下的点与这个点都可以连成一条直线,寻找斜率最大的点(x0,y0),这个点就是需要找的。 (2)以这个点(x0,y0)为基础,按照上述方法寻找下一个点,以此类推,直到形成一个... 阅读全文
posted @ 2015-08-18 11:23 _Java小菜盘 阅读(2887) 评论(0) 推荐(0)
高度最小的BST

摘要:题目:对于一个元素各不相同且按升序排列的有序序列,请编写一个算法,创建一棵高度最小的二叉查找树。给定一个有序序列int[]vals,请返回创建的二叉查找树的高度。 由于没有让给出树的构造过程,所以可以直接通过归纳的方式计算得出结果。但是在这里我们仍旧使用递归的方式模拟树的构建,并最终得到二叉搜... 阅读全文
posted @ 2015-08-12 09:35 _Java小菜盘 阅读(436) 评论(0) 推荐(0)
判断有向图中两点之间是否存在路径

摘要:对于一个有向图,请实现一个算法,找出两点之间是否存在一条路径。给定图中的两个结点的指针UndirectedGraphNode*a,UndirectedGraphNode*b(请不要在意数据类型,图是有向图),请返回一个bool,代表两点之间是否存在一条路径(a到b或b到a)。import java.... 阅读全文
posted @ 2015-08-07 13:09 _Java小菜盘 阅读(3960) 评论(0) 推荐(0)
堆排序建堆复杂度在特殊情况下的推导

摘要:堆排序分为两个过程,一个建堆的过程,一个是从堆顶取数的过程。这里针对第一个过程,给出在堆的形式是完全满二叉树的情况下,建堆复杂度Ο(n)的简单推导。 上图是一个完全满二叉树,假设一个完全满二叉树的节点数为n,树高为h(共h层),则满足h = log(n + 1)。由堆的构建过程可以知道,第... 阅读全文
posted @ 2015-08-06 16:26 _Java小菜盘 阅读(637) 评论(0) 推荐(0)
一个用来进行算法演示的网站

摘要:太原理工大学有一门数据结构的精品课程,课程给出了栈和队列、线性表、树、图以及查找和排序的算法演示过程。 http://www.tyut.edu.cn/kecheng1/site01/suanfayanshi/default.asp图: (1)拓扑排序算法思想:选一个入度为 0 的顶点输出,并... 阅读全文
posted @ 2015-08-06 16:00 _Java小菜盘 阅读(755) 评论(0) 推荐(0)
几种常见排序算法的时间复杂度和简单描述

摘要:下面总结几种常见的排序算法,包括插入排序、选择排序、快速排序、归并排序和堆排序。时间复杂度:插入排序选择排序快速排序归并排序堆排序Ο(n2)Ο(n2)Ο(nlog(n))Ο(nlog(n))Ο(nlog(n))算法概述:插入排序:每次从未排好序的数据堆中拿出一个数,插入到已排好序的数据队列的正确... 阅读全文
posted @ 2015-08-06 11:01 _Java小菜盘 阅读(1420) 评论(0) 推荐(0)
二叉树平衡检查

摘要:实现一个函数,检查二叉树是否平衡,平衡的定义如下,对于树中的任意一个结点,其两颗子树的高度差不超过1。给定指向树根结点的指针TreeNode*root,请返回一个bool,代表这棵树是否平衡。import java.util.*;/*public class TreeNode { int ... 阅读全文
posted @ 2015-08-06 09:51 _Java小菜盘 阅读(215) 评论(0) 推荐(0)
表达式前中后缀形式的转换

摘要:通常情况下,我们看到的表达式的形式称为表达式的中缀形式:a+b*c-d+e。 为了将其转化为前缀和后缀的形式需要先对表达式进行预处理,因为表达式中优先级的设定(乘除大于加减)虽然是我们约定好的,但是机器却不能够像人类一样加以区分,所以需要我们先告诉他们。为此我们需要加上括号,区分优先级:((a... 阅读全文
posted @ 2015-08-05 10:20 _Java小菜盘 阅读(796) 评论(0) 推荐(0)
用数组实现3个栈之固定分割(Java)

摘要:摘自《程序员面试金典》我们首先最容易想到的就是固定分割的方法:将数组等分为3分,每一份均可以被看做一个栈,然后可以在每个栈上执行出入栈的操作。这种方法优点是比较直接,实现简单。当然缺点是不够灵活,有可能一个栈出现了空间溢出的情况,而其他栈还是空的状态。 下面说下实现的思路,首先对于长度为n的数... 阅读全文
posted @ 2015-07-29 10:30 _Java小菜盘 阅读(498) 评论(0) 推荐(0)

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3