
数据结构与算法
王加油
The best or nothing!
展开
-
动手实现数据结构-二叉树、二叉堆
从宏观的角度来看,二叉树的遍历归结为两大类:深度优先遍历(前序遍历、中序遍历、后序遍历) 广度优先遍历(层序遍历)二叉树的实现和前序遍历的非递归实现:import java.util.Arrays;import java.util.LinkedList;import java.util.Stack;public class myBinaryTree { /** * 构建...原创 2019-08-19 00:10:05 · 165 阅读 · 0 评论 -
动手实现集合框架-HashSet、HashMap
HashSet遍历:Set不提供get()来获取指定位置的元素,所以遍历需要用到迭代器,或者增强型for循环。import java.util.HashSet;import java.util.Iterator; public class TestCollection { public static void main(String[] args) { ...原创 2019-08-10 14:16:53 · 153 阅读 · 0 评论 -
动手实现数据结构-数组、链表、队列、散列表
最近各种笔试、面试被虐,归结起来,打铁还需自身硬,想揽瓷器活,就得有金刚钻。任何各种投机取巧、侥幸心理都是没意义的。出来混,欠的总是要还的!在学习上,必须死磕到底。数组数组(array),是有限个相同类型的变量所组成的有序集合,每一个变量被称为元素。 数组是最为简单、最为常用的数据结构。 在内存中顺序存储,可以很好地实现逻辑上的顺序表。 根据下标读取元素的方式叫作随机读取。 数组适...原创 2019-08-12 08:55:45 · 198 阅读 · 0 评论 -
动手实现数据结构-二叉树
二叉树由各种节点组成;特点:每个节点都可以有左子节点,右子节点 每一个节点都有一个值节点代码:public class Node { // 左子节点 public Node leftNode; // 右子节点 public Node rightNode; // 值 public Object value;}二叉树的插入和遍历,实现...原创 2019-08-09 10:27:40 · 160 阅读 · 0 评论 -
动手实现数据结构-字符串
仿照StringBuffer,根据接口IStringBuffer ,自己做一个MyStringBuffer。IStringBuffer接口:public interface IStringBuffer { public void append(String str);//追加字符串 public void append(char c);//追加字符 public void inse...原创 2019-08-08 22:06:33 · 258 阅读 · 0 评论 -
剑指Offer刷题-二叉搜索树找出其中的第k小的结点
题目描述-二叉搜索树的第k个结点给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。知识点:二叉搜索树具有左小右大的有序特性,对它进行中序遍历,将得到一个从小到大的输出序列。中序遍历:中序遍历其左子树 访问根节点 中序遍历其右子树/*public class TreeNode { i...原创 2019-08-06 21:38:34 · 1372 阅读 · 0 评论 -
十大经典排序算法实现与个人理解(上)
自己愚笨,简单的排算法,都要理解很久。不过也好歹算是自以为是地理解了一点,用自己的语言,将算法的过程和思想进行描述。可能会比较啰嗦,但好在此篇博文不为悦人,只为悦己。但如果万一能对人有帮助的话,那就更好了。如果有疏漏和理解错误的地方,还请不吝批评指正,谢谢!选择排序package sort;import java.util.Arrays;/** * 选择排序 * 就是每次先...原创 2019-08-05 23:14:37 · 223 阅读 · 0 评论 -
剑指 Offer 题解摘录
题目描述:把字符串转换成整数将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。这个解题算是考虑非常全面了,实现也很清晰,所以就摘录下来,以时时观摩。package offer;import java.util.Array...原创 2019-08-03 03:17:29 · 160 阅读 · 0 评论 -
《算法》第四版笔记第二章 排序
即使你只是使用标准库中的排序函数,学习排序算法仍然有三大实际意义:对排序算法的分析将有助于你全面理解本书中比较算法性能的方法; 类似的技术也许能有效解决其他类型的问题; 排序算法常常是我们解决其他问题的第一步。选择排序一种最简单的排序算法是这样实现的:首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素,那么它就和自己交换)。再次,在剩下的...原创 2019-04-21 15:08:35 · 261 阅读 · 0 评论 -
《算法》第四版笔记第一章 基础
1.1.4 简便记法程序有很多写法,我们追求清晰、优雅和高效的代码。这样的代码经常会使用以下这些广为流传的简便写法(不仅仅是Java,很多语言都支持它们)。1.1.4.1 声明并初始化最好在接近首次使用变量的地方声明它并将其初始化(为了限制它的作用域)。int i = 1;//创建了名为i的变量并赋予其初始值1。1.1.4.2 隐式赋值递增/递减运算符 ++i;--i;...原创 2019-04-18 23:26:51 · 237 阅读 · 0 评论 -
牛客网刷《剑指Offer》day01
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。我的答案:public class Solution { public boolean Find(int target, int [][] array) { fo...原创 2019-04-09 22:51:10 · 155 阅读 · 0 评论 -
运行《算法》第四版的BinarySearch
开始学习《算法》第四版,但环境搭建费了很久时间,终于找到了这篇,使用方法三进行实验,搭建成功。目前先按照这么做,后来如果有更好的方法,再进行添加。原文地址:https://blog.youkuaiyun.com/sinat_41104353/article/details/81028672...转载 2019-04-15 19:53:28 · 482 阅读 · 0 评论 -
计数排序备忘
计数排序是线性排序,是基数排序的一种。主要先上代码和输出,可以看一下。import java.util.Arrays;public class CountSort { public static void main(String[] args) { int[] arr = {2,4,2,3,7,1,1,0,0,5,6,9,8,5,7,4,0,9}; System.out.p...原创 2019-09-06 23:54:07 · 221 阅读 · 0 评论