数据结构与算法
大哥的叔
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
对于唯一主键UUID的学习以及使用类似的还有雪花算法用于分布式系统中雪花算法更强大也更复杂
唯一主键随机生成通过UUID生成类生成后可以去除中间的短线通过?String的replace方法然后对其进行hash调用String的hashCode方法获取hash码通过三元关系使其为正package baseoflearn.learn;import java.util.UUID;/** * @author :zhaofuh * @date :Created in 2020/10/24 11:39 * @description:测试唯一主键uuid * @modified By:.原创 2020-10-26 16:20:15 · 5675 阅读 · 0 评论 -
插值查找(运用递归,类似于二分查找)
就是运用简单的数学思想对二分查找简单改变原理mid = (l+r)/2 =l+(r-l)2 =left + (right-left)*(findVal-arr[left])/(arr[right]-arr[left])package com.search;/** * @Auther: 大哥的叔 * @Date: 2019/8/10 11:43 * @Description...原创 2019-08-10 12:11:12 · 10447 阅读 · 0 评论 -
二分查找(序列是顺序的运用递归)
package com.search;import java.util.ArrayList;import java.util.List;/** * @Auther: 大哥的叔 * @Date: 2019/8/9 17:21 * @Description: *///注意:使用二分查找的前提是 该数组是有序的public class BinarySearch { pub...原创 2019-08-09 18:00:07 · 11036 阅读 · 0 评论 -
斐波那契查找(感觉不到速度可能自己太菜)
package com.search;import java.util.Arrays;/** * @Auther: 大哥的叔 * @Date: 2019/8/10 12:15 * @Description: */public class FibonacciSearch { public static int maxSize = 20; public stati...原创 2019-08-10 17:02:36 · 10466 阅读 · 0 评论 -
图
package com.graph;import java.util.ArrayList;import java.util.Arrays;import java.util.LinkedList;public class Graph { private ArrayList<String> vertexList; //存储顶点集合 private int[][] edg...原创 2019-08-19 21:16:47 · 10747 阅读 · 0 评论 -
线索二叉树
package com.tree;import java.util.concurrent.SynchronousQueue;/** * @Auther: 大哥的叔 * @Date: 2019/8/15 13:54 * @Description: */public class ThreadedBinaryTreeDemo { public static void mai...原创 2019-08-15 14:46:21 · 10562 阅读 · 0 评论 -
堆排序最大堆最小堆
package com.tree;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;/** * @Auther: 大哥的叔 * @Date: 2019/8/15 14:55 * @Description: */public class HeapSort { ...原创 2019-08-15 14:59:56 · 10926 阅读 · 0 评论 -
用哈希表实现一个员工的表可顺序插入
package com.hashtable;import java.util.Scanner;/** * @Auther: 大哥的叔 * @Date: 2019/8/11 10:45 * @Description: */public class hashTableDemo { public static void main (String[] args) { ...原创 2019-08-11 21:08:18 · 10303 阅读 · 0 评论 -
二分查找非递归
package com.BinarySearchNoRecur;/** * @Auther: 大哥的叔 * @Date: 2019/8/20 19:31 * @Description: */public class BinarySearchNoRecur { public static void main(String[] args) { //测试 ...原创 2019-08-20 19:34:35 · 10641 阅读 · 0 评论 -
动态规划之零一背包问题
package com.dynamic;/** * @Auther: 大哥的叔 * @Date: 2019/8/20 19:36 * @Description: */public class KnapsackProblem { public static void main(String[] args) { // TODO Auto-generated m...原创 2019-08-20 19:48:12 · 10984 阅读 · 1 评论 -
二叉树的基本实现(手动添加)前序、中序、后序
package com.tree;/** * @Auther: 大哥的叔 * @Date: 2019/8/12 06:40 * @Description: */public class BinaryTreeDemo { public static void main (String[] args) { //先需要创建一颗二叉树 Binar...原创 2019-08-12 10:09:53 · 10544 阅读 · 0 评论 -
哈夫曼树的实现
package com.HuffmanTree;/** * @Auther: 大哥的叔 * @Date: 2019/8/15 19:34 * @Description: */import java.util.ArrayList;import java.util.Collections;import java.util.List;public class HuffmanTre...原创 2019-08-15 20:06:38 · 10371 阅读 · 0 评论 -
运用哈夫曼树实现哈夫曼编码的文件压缩与解压
package com.HuffmanTree;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java....原创 2019-08-15 21:56:53 · 11485 阅读 · 0 评论 -
把操作压入栈实现二叉树的前中后遍历
package offer_pro.caculate;import java.util.ArrayDeque;import java.util.ArrayList;import java.util.Deque;import java.util.List;/** * @Auther: 大哥的叔 * @Date: 2019/8/16 15:25 * @Description: ...原创 2019-08-16 20:31:00 · 10809 阅读 · 0 评论 -
二叉排序树的添加、遍历、删除(看图写删除代码比较清晰)
package com.binarysortree;/** * @Auther: 大哥的叔 * @Date: 2019/8/17 06:15 * @Description: */public class BinarySortTreeDemo { public static void main(String[] args) { int[] arr...原创 2019-08-17 09:49:00 · 10401 阅读 · 0 评论 -
平衡二叉树
package com.avl;/** * @Auther: 大哥的叔 * @Date: 2019/8/18 06:12 * @Description: */public class AVLTreeDemo { public static void main(String[] args) { //int[] arr = {4,3,6,5,7,8}; ...原创 2019-08-18 06:28:54 · 10553 阅读 · 0 评论 -
用快慢指针实现查找链表的中间值
快慢指针就是类似于合并排序过程中的步长那样一个指针每次走二一个走以等走到一半时第一个刚完基于此提高效率package com.linkedlist;/** * @Auther: 大哥的叔 * @Date: 2019/9/9 18:19 * @Description: */public class ModList { static ListNode head = new...原创 2019-09-09 22:43:28 · 2924 阅读 · 0 评论 -
什么是HashMap(一)初始容量 (16)和 负载因子(0.75)put get
Map 是 Key-Value 对映射的抽象接口,该映射不包括重复的键,即一个键对应一个值。HashMap 是 Java Collection Framework 的重要成员,也是Map族(如下图所示)中我们最为常用的一种。简单地说,HashMap 是基于哈希表的 Map 接口的实现,以 Key-Value 的形式存在,即存储的对象是 Entry (同时包含了 Key 和 Value) 。在Ha...原创 2019-09-10 08:58:30 · 5260 阅读 · 0 评论 -
查找倒数第k个节点(通过快慢指针)
首先定义两个指针 fast 和 slow , fast 和 slow 指针都指向链头 head,然后 fast 指针先向前走 K 步,这样 slow 和 fast 中间就间隔了 K 个节点,最后 slow 和 fast 同步向前移动,直到 fast 指针走到链表末尾,此时 slow 指针,就正好指向倒数第 K 个结点。package com.linkedlist;/** * @Aut...原创 2019-09-16 22:24:07 · 2365 阅读 · 0 评论 -
输入一个链表,反转链表后,输出新链表的表头
public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}public class Solution { public ListNode ReverseList(ListNode head) { ...原创 2019-09-25 14:52:17 · 6887 阅读 · 0 评论 -
给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被
运用回溯package program;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.Stack;/** * @Auther: 大哥的叔 * @Date: 2019/9/28 15:05 * @Description:刚开始想的是用整数划...原创 2019-09-28 19:57:16 · 3534 阅读 · 0 评论 -
给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次
package program;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.Stack;/** * @Auther: 大哥的叔 * @Date: 2019/9/28 15:05 * @Description:刚开始想的是用整数划分将所有结果...原创 2019-09-28 22:47:42 · 2900 阅读 · 0 评论 -
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组
package program;import java.util.ArrayList;import java.util.Arrays;import java.util.List;/** * @Auther: 大哥的叔 * @Date: 2019/9/29 13:29 * @Description: */public class ThreeNumAdd { List&...原创 2019-09-29 14:27:49 · 3847 阅读 · 1 评论 -
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。
package program;/** * @Auther: 大哥的叔 * @Date: 2019/10/1 17:22 * @Description: */public class Price { public static void main (String[] args) { int [] a={7,1,5,3,6,4}; Price...原创 2019-10-01 18:56:19 · 3004 阅读 · 0 评论 -
java int 的最值Integer.MAX_VALUEInteger.MIN_VALUE
java int 类整数的最大值是 2 的 31 次方 - 1 = 2147483648 - 1 = 2147483647可以用 Integer.MAX_VALUE 表示它,即 int value = Integer.MAX_VALUE;Integer.MAX_VALUE + 1 = Integer.MIN_VALUE = -2147483648一般用于找最小最大如果比较找最小...原创 2019-10-01 19:02:16 · 4339 阅读 · 0 评论 -
给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。
package program;import java.util.ArrayList;import java.util.List;/** * @Auther: 大哥的叔 * @Date: 2019/10/8 15:00 * @Description: */public class IP { public static void main (String[] ar...原创 2019-10-08 16:01:22 · 5281 阅读 · 0 评论 -
选择排序的实现
首先是找规律选择排序就是找最小的通过下标找然后进行交换每找一次下标后移如果不是最小的下标将它置为最小package com.sort;import java.util.Arrays;/** * @Auther: 大哥的叔 * @Date: 2019/8/5 06:04 * @Description: */public class SelectSort { publ...原创 2019-08-05 06:44:14 · 10243 阅读 · 0 评论 -
稀疏数组的实现过程
首先把一个大数组内容遍历然后提取行和列以及数据创建新的数组三行n+1列n是数据将数据存入就是存取package com.sparseArray;public class SparseArray { public static void main (String[] args) { //创建一个原始二维数组 //0表示没有棋子,1表示黑子2表示蓝...原创 2019-07-25 08:35:20 · 10485 阅读 · 0 评论 -
环形单链表的增、删,查(约瑟夫问题)
创建数据结构编号、next。私有形式然后用构造器初始化,用getset进行封装,创建环形单链表初始化头头不动package com.linkedlist;/** * @Auther: 大哥的叔 * @Date: 2019/7/29 19:23 * @Description: */public class Josepfu { public static void main...原创 2019-07-30 07:17:38 · 10539 阅读 · 0 评论 -
用递归实现八皇后问题
定义一个数组下标是列值是皇后放置位置package com.recursion;/** * @Auther: 大哥的叔 * @Date: 2019/8/2 16:59 * @Description: */public class Queue8 { //定义一个max表示共有多少个皇后 int max=8; //定义一个数组,保存皇...原创 2019-08-02 18:17:37 · 10212 阅读 · 0 评论 -
用数组实现队列
第一个只能用一次先是创造数据结构(最大值,俩索引,存数据的),用构造器初始化,判断空或者满,增加,取出package com.sparseArray.queue;//使用数据模拟队列class ArrayQueue{ private int maxSize; private int front; private int rear; private int...原创 2019-07-25 18:20:47 · 11022 阅读 · 0 评论 -
冒泡排序的思想以及实现
首先是定义一个数组放入数据,接下来第一次循环把最大的元素放在最后用for和临时变量看出规律后双重循环完成,以及后面的优化如果不交换证明排序完成退出循环package com.sort;import javax.sound.midi.Soundbank;import java.util.Arrays;/** * @Auther: 大哥的叔 * @Date: 2019/8/3...原创 2019-08-03 17:27:26 · 10505 阅读 · 0 评论 -
栈得调用
package com.Stack;import java.util.Stack;/** * @Auther: 大哥的叔 * @Date: 2019/7/31 05:51 * @Description: */public class TestStack { public static void main (String[] args) { Stack&l...原创 2019-07-31 07:05:15 · 10294 阅读 · 0 评论 -
用数组实现一个栈
首先是创建一个数据结构包括尺寸、数组模拟栈、定义栈顶top。构造器初始化size然后创建栈并且传入size。接着判断空、满进行出入栈操作、显示,最后测试创建对象初始化添加删除查看package com.Stack;import java.util.Scanner;/** * @Auther: 大哥的叔 * @Date: 2019/7/30 07:30 * @Descrip...原创 2019-07-31 07:11:58 · 11911 阅读 · 0 评论 -
用数组实现环形队列通过取模的方式实现
基本方式和之前相同但是front指向第一个元素,rear指向最后一个的下一个初始为零package com.sparseArray.queue;import java.util.Scanner;/** * @Auther: 大哥的叔 * @Date: 2019/7/26 07:31 * @Description: */public class CircleArrayQueu...原创 2019-07-26 08:19:27 · 948 阅读 · 1 评论 -
java取模这么久才发现自己之前的理解不对
取模运算(即取余数)10%4 = 2a%b 当a < b ,结果是a,例:2%5=2;当 a=b,结果是0;例:5%5=0;当a能被b整除,那么结果是0;1%-5 = 1;-1%5 = -1;有负数看左边,不看右边;...原创 2019-07-26 09:07:55 · 10773 阅读 · 0 评论 -
链表实现栈
package com.Stack;/** * @Auther: 大哥的叔 * @Date: 2019/7/31 17:27 * @Description: */public class LinkedListStackDemo { public static void main(String[] args) { LinkedListStack...原创 2019-07-31 19:10:13 · 10064 阅读 · 0 评论 -
希尔排序(缩小增量排序)
package com.sort;import java.util.Arrays;/** * @Auther: 大哥的叔 * @Date: 2019/8/5 09:54 * @Description: */public class ShellSort { public static void main (String[] args) { int[] ar...原创 2019-08-05 11:19:23 · 10415 阅读 · 0 评论 -
数组栈实现计算器 (问题比较多,算式长类型变化多值不对)
package com.Stack;/** * @Auther: 大哥的叔 * @Date: 2019/7/31 21:46 * @Description: */public class Calculator { public static void main(String[] args) { //根据前面老师思路,完成表达式的运算 Stri...原创 2019-07-31 22:10:55 · 10495 阅读 · 0 评论 -
双向链表增删改查(有点问题顺序增加不到尾部)
package com.linkedlist;import java.util.SortedMap;/** * @Auther: 大哥的叔 * @Date: 2019/7/29 05:07 * @Description: */public class DoubleLinkedListDemo { public static void main (String[] arg...原创 2019-07-29 19:14:29 · 10762 阅读 · 0 评论
分享