数据结构与算法
虽然对实际开发影响不大,但是学好了会提高开发效率与解决问题的思路,效率
狂野小白兔
只是发发每天的学习日志,希望能帮到一些人理清Java学习思路图
展开
-
数据结构与算法【LeetCode-Offer】:4.2字符串—如何更好地理解和掌握 KMP 算法
如何更好地理解和掌握 KMP 算法原创 2022-02-21 15:33:19 · 223 阅读 · 0 评论 -
数据结构与算法【LeetCode-Offer】:4.1字符串—暴力算法—实现 strStr()
4.1字符串—暴力算法—实现 strStr()原创 2022-02-16 15:23:41 · 83 阅读 · 0 评论 -
数据结构与算法【LeetCode-Offer】:3.9哈希表—四数之和
3.8哈希表—三数之和原创 2022-02-11 10:43:37 · 262 阅读 · 0 评论 -
数据结构与算法【LeetCode-Offer】:3.8哈希表—三数之和
3.8哈希表—三数之和原创 2022-02-10 09:56:14 · 424 阅读 · 0 评论 -
数据结构与算法【LeetCode-Offer】:3.7哈希表—赎金信
3.7哈希表—赎金信原创 2022-02-09 10:52:45 · 437 阅读 · 0 评论 -
数据结构与算法【LeetCode-Offer】:3.6哈希表—四数相加Ⅱ
3.6哈希表—四数相加Ⅱ原创 2022-02-08 10:05:05 · 356 阅读 · 0 评论 -
数据结构与算法【LeetCode-Offer】:3.5哈希表—两数之和
3.5哈希表—两数之和原创 2022-01-26 11:32:32 · 324 阅读 · 0 评论 -
数据结构与算法【LeetCode-Offer】:3.4哈希表—快乐数
3.4哈希表—快乐数原创 2022-01-24 09:51:14 · 344 阅读 · 0 评论 -
数据结构与算法【LeetCode-Offer】:3.3哈希表—两个数组的交集
两个数组的交集原创 2022-01-17 10:38:45 · 173 阅读 · 0 评论 -
数据结构与算法【LeetCode-Offer】:3.2哈希表—有效的字母异位词
3.2哈希表—有效的字母异位词原创 2022-01-14 10:55:16 · 71 阅读 · 0 评论 -
数据结构与算法【LeetCode-Offer】:3.1哈希表—哈希表理论基础【存储数据的结构】
哈希表理论基础【存储数据的结构】原创 2022-01-13 10:43:49 · 244 阅读 · 0 评论 -
数据结构与算法【LeetCode-Offer】:2.8链表—160. 相交链表
160. 相交链表原创 2021-12-24 10:25:18 · 357 阅读 · 0 评论 -
数据结构与算法【LeetCode-Offer】:2.8链表—160. 相交链表
160. 相交链表原创 2021-12-23 10:08:45 · 171 阅读 · 0 评论 -
数据结构与算法【LeetCode-Offer】:2.8链表—160. 相交链表
160. 相交链表原创 2021-12-22 11:10:36 · 209 阅读 · 0 评论 -
数据结构与算法【LeetCode-Offer】:2.7链表—21. 合并两个有序链表
21. 合并两个有序链表原创 2021-12-21 10:24:08 · 95 阅读 · 0 评论 -
数据结构与算法【LeetCode-Offer】:2.6链表—24. 两两交换链表中的节点
两两交换链表中的节点原创 2021-12-20 10:17:23 · 445 阅读 · 0 评论 -
数据结构与算法【LeetCode-Offer】:2.5链表—92. 反转链表Ⅱ
92. 反转链表Ⅱ原创 2021-12-14 09:57:57 · 340 阅读 · 0 评论 -
数据结构与算法【LeetCode-Offer】:2.4链表—706. 反转链表
反转链表原创 2021-12-13 11:46:05 · 333 阅读 · 0 评论 -
数据结构与算法【LeetCode-Offer】:2.3链表—707. 设计链表
原文链接题目描述题目链接实例:MyLinkedList linkedList = new MyLinkedList();linkedList.addAtHead(1);linkedList.addAtTail(3);linkedList.addAtIndex(1,2); //链表变为1-> 2-> 3linkedList.get(1); //返回2linkedList.deleteAtIndex(1); //现在链表是1-> 3linked原创 2021-12-10 13:42:29 · 80 阅读 · 0 评论 -
数据结构与算法【LeetCode-Offer】:2.2链表—203.移除链表元素
2.2链表—203.移除链表元素原创 2021-12-08 11:11:49 · 88 阅读 · 0 评论 -
数据结构与算法【LeetCode-Offer】:2.1链表—链表理论基础【数据结构三要素,线性表的定义,顺序表,链表】
原文链接1. 数据结构三要素1)逻辑结构 指的是数据间的逻辑关系,与数据的存储无关,独立于计算机之外。它又分为线性结构和非线性结构线性结构:线性表,栈,队列,串,数组和广义表非线性结构:树,图,集合2)存储结构 是逻辑结构的存储映像,就是数据间的关系在计算机中的表现形式。也称为物理结构。它又分为 4 类:顺序存储 ,链式存储,索引存储和散列存储顺序存储:把逻辑上相邻的元素存储在物理位置也相邻的存储单元里链式存储:不要求物理位置的相邻,借助指示元素存储地址的指针表示元素之间的逻辑关系索原创 2021-12-07 11:08:47 · 816 阅读 · 1 评论 -
数据结构与算法【LeetCode-Offer】:1.4数组—59. 螺旋矩阵 II
原文链接题目描述题目链接解题思路代码演示:package com.kami.leetcode.arrayStudy;/** * @Description: TODO * @author: scott * @date: 2021年12月02日 9:56 */public class L_59 { public int[][] generateMatrix(int n){ //创建一个二维数组 int[][] res = new int[n][原创 2021-12-02 10:17:44 · 428 阅读 · 0 评论 -
数据结构与算法【LeetCode-Offer】:1.3数组—31.下一个排列
原文链接题目描述题目链接:解题思路代码演示:class Solution { public void nextPermutation(int[] nums) { // 1. 从后往前找第一个升序对 (nums[i], nums[i+1]) int i = nums.length - 2; for (; i >= 0; i--) { if (nums[i] < nums[i + 1]) {原创 2021-12-01 10:24:10 · 67 阅读 · 0 评论 -
数据结构与算法【LeetCode-Offer】:1.2数组—1539.第 k 个缺失的正整数
原文链接题目描述题目链接:1539. 第 k 个缺失的正整数解题思路代码演示package com.kami.leetcode.arrayStudy;/** * @Description: TODO * @author: scott * @date: 2021年11月30日 9:18 */public class L_1539 { public static int findKthPositive(int[] arr, int k){ int cur =原创 2021-11-30 10:02:00 · 271 阅读 · 0 评论 -
数据结构与算法【LeetCode-Offer】:1.1数组—数组理论基础
原文链接1. 一维数组详解2. 多维数组详解3. for each 循环使用正常的for循环来遍历多维数组for(int i = 0; i < d1.length; i++){ for(int j = 0; j < d1[i].length; j++){ System.out.print(d1[i][j] + " "); } System.out.println();}4. 可变参数代码演示:pu原创 2021-11-29 14:10:50 · 102 阅读 · 0 评论 -
数据结构与算法【基础版】:4.18 数据压缩之创建编码表&编码
4.18 数据压缩之创建编码表&编码上节回顾:代码演示:TestHuffmanCode .javapackage main.java.com.LiKou.demo10;import java.util.*;public class TestHuffmanCode { public static void main(String[] args) { String msg = "can you can a can as a can canner can a ca原创 2021-11-17 11:48:15 · 180 阅读 · 0 评论 -
数据结构与算法【基础版】:2.7 查找算法整合
2.7 查找算法整合代码演示:MyArray.javapackage com.kami.leetcode.alg.util;import java.util.Arrays;public class MyArray { //创建一个数组 private int[] arr; //构造方法 public MyArray(){ arr = new int[0]; } //获取数组长度的方法 public int size()原创 2021-11-16 12:00:06 · 64 阅读 · 0 评论 -
数据结构与算法【基础版】:2.6 查找算法之二分法查找
2.6 查找算法之二分法查找图例演示:查找的目标数组必须是有序的代码演示:TestBinarySearch.javapackage com.kami.leetcode.alg;/** * 查找算法之二分法查找 */public class TestBinarySearch { public static void main(String[] args) { //目标数组 int[] arr = {1, 2, 3, 4, 5, 6, 7};原创 2021-11-15 10:33:32 · 531 阅读 · 0 评论 -
数据结构与算法【基础版】:2.5 查找算法之线性查找
2.5 查找算法之线性查找图例演示:代码演示:TestSearch:/** * 查找算法之线性查找 */public class TestSearch { public static void main(String[] args) { //目标数组 int[] arr = {2, 3, 4, 5, 6, 8, 9}; //要查找的数 int target = 8; //目标元素所在下标原创 2021-11-12 10:55:57 · 226 阅读 · 0 评论 -
数据结构与算法【基础版】:2.4 面向对象的数组
2.4 面向对象的数组图例演示:代码演示:MyArray.javapublic class MyArray { //创建一个数组 private int[] arr; //构造方法 public MyArray(){ arr = new int[0]; } //获取数组长度的方法 public int size(){ return arr.length; } //往数组的末尾添加数组原创 2021-11-11 10:50:58 · 395 阅读 · 0 评论 -
数据结构与算法【基础版】:2.3 数组元素的删除
2.3 数组元素的删除数组的基本使用图例演示:n前面的(小于n的),直接赋值,0给0…n-1给n-1n后面的(大于n的),n+1给n,n+2给n+1代码演示:package com.kami.leetcode.alg;import java.util.Arrays;//数组元素的删除public class TestArray03 { public static void main(String[] args) { //目标数组 int[原创 2021-11-10 18:16:59 · 537 阅读 · 0 评论 -
数据结构与算法【基础版】:2.2 数组元素的添加
2.2 数组元素的添加数组的基本使用图例演示:问:新创建的数组如何变成原来的数组呢?只需要给原来的数组(arr)重新赋值,让arr指向新数组即可。arr = newArr;代码:TestArray02.java类package com.kami.leetcode.alg;import java.util.Arrays;//数组元素添加public class TestArray02 { public static void main(String[] args) {原创 2021-11-09 09:57:08 · 269 阅读 · 0 评论 -
数据结构与算法【基础版】:2.1 数组的基本使用
2.1 数组的基本使用结构:数组是一种顺序存储的结构代码演示:package com.kami.leetcode.alg;import java.util.Arrays;public class TestArray { public static void main(String[] args) { //创建一个数组 int[] array = new int[3]; int[] array2 = new int[] {7, 8原创 2021-11-08 10:14:21 · 80 阅读 · 0 评论 -
数据结构与算法【基础版】:1.2 算法概述
1.2 算法概述概述通俗:解决问题的思路是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制输入:可以提供零到多个数据输出:至少有一个结果有穷性:算法在有限的步骤(有限的执行时间)里面执行出结果确定性:写算法的时候,一个输入对应一个输出,结果是确定的(输入一个1,一会输出2一会输出3不行)可行性:写的算法要能解决实际问题正确性:算法能正确的解决问题可读性:让其他程序员能够看懂健壮性:如遇到1/0,报错时候要给用户一个提示时原创 2021-11-05 11:41:41 · 101 阅读 · 0 评论 -
数据结构与算法【基础版】:1.1 数据结构概述
1.1 数据结构概述概述数据结构的概述通俗:数据和数据之间的关系数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成数据结构的两大类数据的存储结构:存到内存中是怎么存的顺序存储结构的定义:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。数组就是顺序存储结构的典型代表链式存储结构的定义:1.我们把存储数据元素信息的域称为数据域,把存储直接后继位置的域称为指针域。2.指针域中存储的信息称为指针或链。这两部分信息组成数原创 2021-11-04 10:30:55 · 94 阅读 · 0 评论 -
数据结构与算法【基础版】:2.8 栈【先进后出】
2.8 栈图例盒子最上面的元素称为栈顶元素代码演示:MyStack.java类package com.kami.leetcode.alg_stack;public class MyStack { //栈的底层我们用数组来存储数据 int[] elements; public MyStack(){ elements = new int[0]; } //压入元素 public void push(int element){原创 2021-11-03 14:56:43 · 107 阅读 · 0 评论 -
数据结构与算法【基础版】:2.9 队列
2.9 队列图例:代码:Myqueue.javapackage com.kami.leetcode.queue;import java.util.Arrays;public class Myqueue { int[] elements; public Myqueue(){ elements = new int[0]; } //入队 public void add(int element){ int[] newAr原创 2021-11-02 10:33:53 · 96 阅读 · 0 评论 -
数据结构与算法【基础版】:2.10 单链表
2.10 单链表代码:Node.javapackage com.kami.leetcode.linked;//一个节点public class Node { //数据域 int data; //指针域 Node next; public Node(int data){ this.data = data; } //为节点追加节点(递归) public Node append(Node node){原创 2021-11-01 15:12:12 · 116 阅读 · 1 评论 -
数据结构与算法【基础版】:4.17 数据压缩之创建赫夫曼树
4.17 数据压缩之创建赫夫曼树上节回顾:图例:代码:首先创建一个Node类package main.java.com.LiKou.demo10;public class Node implements Comparable<Node>{ //代表值 Byte data; //代表权值 int weight; Node left; Node right; public Node(Byte data, int weight)原创 2021-10-29 15:49:15 · 106 阅读 · 0 评论 -
数据结构与算法【基础版】:2.11 删除单链表中的节点
2.11 删除单链表中的节点图例例此时想删除2这个节点的步骤:单从2节点开始没法删除(因为只能取到下一个节点)这时候要先从1节点,连续取后两个节点,然后用3节点指向第一个节点。代码:在上一节的Node类中,新写一个方法 //删除下一个节点 public void removeNext(){ //取出下下一个节点 Node newNext = this.next.next; //把下下一个节点设置为当前节点的下一个节点原创 2021-10-29 10:30:10 · 371 阅读 · 0 评论