![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
YOSHINO_Cream
这个作者很懒,什么都没留下…
展开
-
前缀树实现敏感词过滤
前缀树的节点类为了方便功能的实现,我们需要有一个Boolean类型的变量来标记该节点是否为叶子节点,同样的为了方便判断是否存在某个字符在前缀树中,可以把子节点作成Map的形式,Map的key为该字符,value为真正的子节点。 private class TrieNode { //该节点是否为叶子节点 boolean isEnd; //该节点的子节点 Map<Character, TrieNode> subNode;原创 2022-03-03 20:11:50 · 582 阅读 · 0 评论 -
HashMap 扩容方法,put方法源码解读
//我们调用的put方法 public V put(K key, V value) { //真正的put方法 return putVal(hash(key), key, value, false, true); }/*Implements Map.put and related methods.Params:hash – hash for keykey – the keyvalue – the value to putonlyIfAbsent – if true.原创 2022-02-17 18:07:19 · 283 阅读 · 0 评论 -
删除二叉排序树的节点 java实现
//在节点类中需要准备的方法/** * 查找指定值对应的节点 * * @param val 指定值 * @return 对应的节点 */ public BinarySortTreeNode searchNode(int val) { //如果当前值为指定值,直接返回 if (this.val == val) { return this; //当前值小于指定值 .原创 2022-02-12 22:00:22 · 400 阅读 · 0 评论 -
哈夫曼编码 java实现
用哈夫曼树压缩一个字符串,解压以后再写原创 2022-02-07 19:29:51 · 671 阅读 · 0 评论 -
在数组中查找元素第一个与最后一个的位置
1.当数组无序时:双指针+递归class Solution { public int[] searchRange(int[] nums, int target) { //空数组,直接返回 if(nums.length == 0) { return new int[]{-1,-1}; } //初始左指针,指向第一个元素 int left = 0; //原创 2022-02-05 21:58:24 · 977 阅读 · 0 评论 -
堆排序 java实现
堆排序就是一种特殊的选择排序,借助顺序二叉树大顶堆/小顶堆的特性,每次将根节点与末尾节点交换值,再将出末尾节点之外的节点重新构造大顶堆/小顶堆,直到未排序的数为1(该值为最大/最小值)时结束排序。public class HeapSort { public static void main(String[] args) { int[] arr = {4,6,8,5,9,-12,1,-895,1000}; headSort(arr); Syste原创 2022-02-05 21:49:28 · 650 阅读 · 0 评论 -
插值查找 斐波那契查找 java实现
二者与二分查找思想类似,只不过划分中值点的位置不同插值查找的中值点为:left+(right-left)*(value-arr[left])/(arr[right]-arr[left]);斐波那契的中值点为:int mid = left + fibo[k - 1] - 1;具体实现代码如下插值public static int insertResearch(int[] arr,int left,int right,int value) { if (l原创 2022-01-25 22:34:29 · 341 阅读 · 0 评论 -
基数排序 二分查找java实现
1.基数排序基本思想:依次将要排序数字的个位,十位,百位...依次对应放入编号为0~9的桶中,每次放入后重新从桶中拿出数据,在进行下一次。直到最高位从桶中拿出后,得到的即为有序数组 public void sort(int[] arr) { // 找出最大值的位数,决定了要循环几次 int max = 0; for (int i = 0; i < arr.length; i++) { if (arr[i] > ma原创 2022-01-24 21:53:37 · 270 阅读 · 0 评论 -
希尔排序 快速排序 归并排序 Java实现
1.希尔排序将数组分成n组,n/2组,n/4组...1组,在每次分组后在组内进行排序。最后得到有序的数组//通过交换的方式实现public void sort(int[] arr) { int temp = 0; for (int gap = arr.length / 2; gap > 0; gap /= 2) { for (int i = gap; i < arr.length; i++) {原创 2022-01-21 22:37:52 · 445 阅读 · 0 评论 -
冒泡排序 选择排序 插入排序 java实现
1.冒泡排序原理;每一次排序都将最大/小的元素放在数组的最末尾public class BubbleSort implements Sort { @Override public void sort(int[] arr) { for (int i =0;i < arr.length-1;i++) { boolean flag = true; for (int j = 0;j < arr原创 2022-01-20 22:25:19 · 471 阅读 · 0 评论 -
递归解决迷宫问题 Java
public class MazeRecursion { int[][] maze = new int[9][9]; public void initMaze(){ for (int i = 0;i < 9;i++) { maze[0][i] = 1; maze[i][0] = 1; maze[8][i] = 1; maze[i][8] = 1; .原创 2022-01-18 22:37:15 · 236 阅读 · 0 评论 -
leecode银行
抽象成一个二维数组进行遍历运算即可 public int totalMoney(int n) { int base = 1; int total = 0; for(int i = 0;i < n/7;i++) { int additon = base; for(int j = 0; j <7;j++ ) { total = total+a...原创 2022-01-15 21:33:07 · 3358 阅读 · 0 评论 -
计算器功能的简单实现 java 中缀表达式
数组栈public class ArrayStack { int maxsize; int stack[]; int top; ArrayStack(int maxsize) { this.maxsize = maxsize; top = -1; stack = new int[maxsize]; } boolean isEmpty() { return top == -1;原创 2022-01-13 21:57:30 · 244 阅读 · 0 评论 -
约瑟夫环 循环链表解决 java
public class LoopList { Node head = new Node(0); static int position = 1; LoopList(){ head.next = head; } void addNode(Node node) { Node temp = head; Node cur = node; while (temp.next != head) .原创 2022-01-11 22:10:21 · 120 阅读 · 0 评论 -
合并两个有序链表 java实现
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * }.原创 2022-01-10 22:20:29 · 406 阅读 · 0 评论 -
单向链表 反转链表 java实现
//节点结构public class Node { int data; Node next; Node(int data){ this.data =data; next = null; } @Override public String toString() { return "Node{" + "data=" + data + '}'; .原创 2022-01-09 20:08:13 · 329 阅读 · 0 评论 -
稀疏数组与循环队列 java实现
稀疏数组 public static void main(String[] args) { int simpleArr[][] = new int[8][8]; simpleArr[1][2] = 10; simpleArr[2][4] = 8; simpleArr[6][3] = 7; simpleArr[5][7] = 4; simpleArr[1][3] = 1; for (int[]原创 2022-01-08 21:11:53 · 267 阅读 · 0 评论