数据结构
文章平均质量分 58
qq_39435120
这个作者很懒,什么都没留下…
展开
-
二叉树递归、非递归遍历(Java实现)
遍历是对一颗二叉树最基本的操作,有前序遍历、中序遍历、后序遍历和层次遍历四种,都可以通过递归或者数据结构实现。假定叶子结构如下:static class leaf{ int value; leaf left,right; leaf(int i){ this.value = i; } public String toString() { ...原创 2018-03-30 19:12:33 · 328 阅读 · 0 评论 -
优先队列的基本操作实现与应用(Java实现)
优先队列实质上是一颗完全二叉树,其所有的父节点都比子节点大(或小),也被称为大根堆(或小根堆),其堆顶的元素一定是这组元素的最大(小)值。 和其他数据结构一样,堆有构造、插入、删除、查找等操作。下面举例用了一个int类型的arr数组存放元素,top记录堆底元素的下标。构造一个堆:由于堆实质是一颗完全二叉树,因此可以用数组方便地表示。构造一个堆时,有两种方法,一种是将元素依次插入,每次插入时都对此做...原创 2018-04-02 13:41:59 · 934 阅读 · 0 评论 -
反转链表(Java实现)
反转链表是最基础的数据结构练习题,主要是注意一下边界处理和指针方向,下面提供了两种常用思路。假定节点结构为:static class node{ Object value; node next; node(Object o){ this.value = o; }}头结点也已经声明好了:static node head;思路1:头插法。public st...原创 2018-03-28 13:24:31 · 233 阅读 · 0 评论 -
愚人节的礼物(栈)
题目:四月一日快到了,Vayko想了个愚人的好办法——送礼物。嘿嘿,不要想的太好,这礼物可没那么简单,Vayko为了愚人,准备了一堆盒子,其中有一个盒子里面装了礼物。盒子里面可以再放零个或者多个盒子。假设放礼物的盒子里不再放其他盒子。用()表示一个盒子,B表示礼物,Vayko想让你帮她算出愚人指数,即最少需要拆多少个盒子才能拿到礼物。例子:input:((())(()(B)))output: 3思...原创 2018-03-24 16:28:56 · 437 阅读 · 0 评论 -
求n个数中前k大的数(排序)
这题两种思路,一种很直接的思路就快排,另一种是堆,我们来看下这两种算法的区别。第一种是快排,直接用快排将n个数排成有序,然后将前k大的数输出。平均时间复杂度为O(nlogn),空间复杂度为O(logn)。代码献上:public static void quickSort(int arr[],int k) { Arrays.sort(arr); for(int...原创 2018-03-23 21:46:17 · 9242 阅读 · 0 评论 -
统计一个字符串中出现次数最多的字符(HashMap)
我的思路是用一个HashMap来统计字符中每个字符出现的次数,并记录下出现次数最多的字符。编程实现是先将字符串转化成一个字符数组,然后遍历字符数组,以字符为键、出现次数为值将其插入HashMap中,每次插入先默认它是首次出现,put的同时用一个int的包装类来接受HashMap的返回值(用put()插入重复键时,HashMap会把原来的值返回。这里必须用一个包装类来接受,因为这个返...原创 2018-03-23 21:23:24 · 6273 阅读 · 1 评论 -
求一个链表是否有环、环的长度、环的入口(Java实现)
求一个链表是否有环是比较常问的面试题,下面我们来看下三种常见的思路,假定节点结构为:static class node{ Object value; node next; node(Object o){ this.value = o; }}头结点也已经声明好了:static node head; 思路1:用两个指针指向头结点,一个指针每次向前走一步,然...原创 2018-03-28 23:04:51 · 1504 阅读 · 0 评论 -
求两链表是否相交(Java实现)
求两个链表相交的思路与求环比较相似,下面我们来看下几种常见的思路,假定节点结构为:static class node{ Object value; node next; node(Object o){ this.value = o; }}头结点也已经声明好了:static node head1;static node head2; 思路 1:逐个尝试,...原创 2018-03-29 13:28:30 · 1127 阅读 · 0 评论