
数据结构与算法
java
挖野菜
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
剑指offer_编程题_java版(21-27)
文章目录栈的压入、弹出序列从上往下打印二叉树二叉搜索树的后序遍历序列二叉树中和为某一值的路径复杂链表的复制二叉搜索树与双向链表字符串的排列 栈的压入、弹出序列 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) import java.util.Ar原创 2020-06-04 20:36:27 · 208 阅读 · 0 评论 -
剑指offer_编程题_java版(11-20)
文章目录二进制中1的个数数值的整数次方调整数组顺序使奇数位于偶数前面链表中倒数第k个结点反转链表合并两个排序的链表树的子结构二叉树的镜像顺时针打印矩阵包含min函数的栈 二进制中1的个数 题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 /**方法一大致思路: 如果一个整数不为0,那么这个整数至少有一位是1。如果我们把这个整数减1, 那么原来处在整数最右边的1就会变为0,原来在1后面的所有的0都会变成1 (如果最右边的1后面还有0的话)。其余所有位将不会受到影响。 举个例子: 一个原创 2020-06-02 10:36:02 · 369 阅读 · 0 评论 -
树_java
树的相关概念术语 1)节点< node> 树中每个元素都叫节点 2)根节点或树根< root> 树顶端的节点称之为根节点,也叫树根 3)子树< subTree> 除根节点之外,其他节点可以分为多个树的集合,叫做子树,在上图中, K这个节点可以称之为一颗子树,而H、K、L三个节点组合起来也可以叫做一颗子树 4)节点的度 一个节点直接含有的子树的个数,称之为节点的度。 比如上图中B节点的度为3,C节点的度是2,I、J、K、L节点的度是0 5)叶子节点、叶节点、终端节原创 2020-05-31 09:17:58 · 2805 阅读 · 0 评论 -
栈_java
文章目录栈介绍顺序栈链栈栈的应用 栈介绍 概念 栈是一种只允许在一端进行插入或删除的线性表。 栈的操作端通常被称为栈顶,另一端被称为栈底。 栈的插入操作称为进栈(压栈|push);栈删除操作称为出栈(弹栈|pop)。 特点 栈就像一个杯子,我们只能从杯口放和取,所以栈中的元素是“先进后出”的特点。 存储结构 顺序存储的栈称为顺序栈;链式存储的栈称为链式栈。 我们可以围绕栈的4个元素来实现栈: 2状态:是否栈空;是否栈满。 2操作:压栈push;进栈pop。 顺序栈 具体实原创 2020-05-29 12:25:16 · 259 阅读 · 1 评论 -
十大排序算法_java版
文章目录排序相关的定义排序的分类冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort)希尔排序(Shell Sort)归并排序(Merge Sort)快速排序(Quick Sort)堆排序(Heap Sort)计数排序(Counting Sort)桶排序(Bucket Sort)基数排序(Radix Sort)基数排序 vs 计数排序 vs 桶排序 排序相关的定义 排序:对一序列对象根据某个关键字进行排序。 稳定 :如果a原本在b前面,而a=b,原创 2020-05-22 21:52:44 · 278 阅读 · 0 评论 -
剑指offer_编程题_java版(1-10)
文章目录二维数组中的查找替换空格从尾到头打印链表重建二叉树用两个栈实现队列旋转数组的最小数字斐波那契数列跳台阶变态跳台阶矩形覆盖 二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 解题: 方法一:直接遍历二维数组,找到target 方法二:从二维数组右上角入手,即每行最大的数,代码如下 public class Solution {原创 2020-05-20 23:45:46 · 238 阅读 · 0 评论 -
用java实现二叉树
用java实现二叉树 import java.util.Arrays; import java.util.Iterator; public class TreeNode{ public TreeNode left; public TreeNode right; public int value; public TreeNode(int value) { this.value=valu...原创 2019-11-11 10:29:02 · 339 阅读 · 0 评论 -
Fibonacci数列
public class Fibonacci { public static void main(String[] args) { // TODO 自动生成的方法存根 int arr[] = new int[35]; arr[0] = arr[1] = 1; for (int i = 2; i < arr.length; i++) { ...原创 2018-03-23 22:46:27 · 203 阅读 · 0 评论 -
输出钻石菱形
//输出钻石菱形 public class DiamondDemo { public static void main(String[] args) { // TODO 自动生成的方法存根 for(int i=1;i<=5;i++) { for(int j=i;j<5;j++) { System.out.print(" "); } for(int ...转载 2018-03-23 22:49:06 · 940 阅读 · 0 评论 -
杨辉三角
public class YangHuiTriangle { public static void main(String[] args) { // TODO 自动生成的方法存根 int row=8; int array[][]=new int[row][]; for(int i=0;i<row;i++) { array[i]=new int[i+1]; ar...转载 2018-03-23 22:59:01 · 236 阅读 · 0 评论 -
魔方阵
import java.util.Scanner; public class MagicSquare { public static void main(String[] args) { // TODO 自动生成的方法存根 Scanner mscan=new Scanner(System.in); System.out.println("please input odd num o...原创 2018-03-23 23:02:20 · 576 阅读 · 0 评论 -
06-排序算法-内部排序.插入排序.希尔排序
package 内部排序.插入排序.希尔排序; import java.util.Arrays; public class ShellSort { public static void main(String[] args) { int arr[]={6,-8,43,3,9,-1,45}; shellSort1(arr); } //在插入时采用交换法 public static void shel...原创 2020-05-22 21:59:17 · 116 阅读 · 1 评论 -
06-排序算法-内部排序.归并排序
package 内部排序.归并排序; import java.util.Arrays; /** 归并思想,分治策略 */ public class MergeSort { public static void main(String[] args) { int arr[]={6,-8,43,3,9,-1,45}; int[] tmp = new int[arr.length]; //新建...原创 2020-05-22 21:59:35 · 122 阅读 · 1 评论 -
06-排序算法-内部排序-基数排序
package 内部排序.基数排序; import java.util.Arrays; public class RadixSort{ public static void main(String[] args){ //声明要排序的数组 int arr[]={6,8,43,3,9,1,45}; //调用基数排序函数 radixSort(arr); //输出排序后的数组 System.out.pri...原创 2020-05-22 21:59:47 · 117 阅读 · 1 评论 -
02数组模拟队列
import java.sql.SQLOutput; public class QueueDemo { public static void main(String[] args) { ArrayQueue arrayqueue=new ArrayQueue(1); arrayqueue.addQueue(2); arrayqueue.addQueue(2); arrayqueue.showQue...原创 2019-09-23 20:20:35 · 102 阅读 · 0 评论 -
03链表
单链表 public class LinkTableDemo { public static void main(String[] args) { LinkNode ln1=new LinkNode(1,“aa”); LinkNode ln2=new LinkNode(2,“bb”); LinkNode ln3=new LinkNode(3,“cc”); LinkNode ln4=new Link...原创 2019-09-23 20:27:40 · 135 阅读 · 0 评论 -
03链表反转-头插法
/** @author qyg 定义一个单链表 / class Node { //变量 private int record; //指向下一个对象 private Node nextNode; public Node(int record) { super(); this.record = record; } public int getRecord() { return record; } p...原创 2019-09-23 20:31:03 · 303 阅读 · 0 评论 -
03链表-约瑟夫问题
package 约瑟夫问题; /** 约瑟夫问题–环行链,按顺序出节点 */ public class Josepfu { public static void main(String[] args) { CircleSingleLinkedList csll=new CircleSingleLinkedList(); csll.add(10); csll.show(); csll.nodeo...原创 2019-09-23 20:32:31 · 151 阅读 · 0 评论 -
03链表-双向链表增删改查
package 双向链表增删改查; public class DoubleLinkedListDemo { public static void main(String[] args) { System.out.println(“双向链表”); LinkNode3 ln1=new LinkNode3(1,“aa”); LinkNode3 ln2=new LinkNode3(2,“bb”); Lin...原创 2019-09-23 20:34:45 · 290 阅读 · 0 评论 -
04栈-使用数组模拟栈
package 使用数组模拟栈; public class ArrayStackDemo { public static void main(String[] args) { ArrayStack as=new ArrayStack(); as.push(1); as.push(1); as.push(1); as.push(1); as.show(); } } class ArrayS...原创 2019-09-23 20:35:51 · 131 阅读 · 0 评论 -
04栈-使用链表模拟栈
package 使用链表模拟栈; import sun.awt.image.ImageWatched; public class LinkedStackDemo { public static void main(String[] args) { LinkedStack ls=new LinkedStack(); ls.push(1); ls.push(2); ls.push(3); ls.pus...原创 2019-09-23 20:36:44 · 173 阅读 · 1 评论 -
04-使用栈实现简单计算器
package 使用栈实现计算器; public class Calculator { public static void main(String[] args) { //需要计算的表达式 String expression=“30+2*6-200”; //数字栈 ArrayStack1 numstack=new ArrayStack1(10); // 符号栈 ArrayStack1...原创 2019-09-23 20:37:26 · 319 阅读 · 0 评论 -
05-递归回溯-迷宫问题
package 迷宫问题; public class MiGong { public static void main(String[] args) { //创建数组,模拟迷宫 int[][] map=new int[8][7]; //使用一表示墙 //第一行和最后一行置为一 for (int i = 0; i < 7; i++) { map[0][i]=1; map[7][i]=1; } ...原创 2019-09-23 20:38:48 · 256 阅读 · 0 评论 -
05-递归回溯-八皇后问题
package 八皇后问题; import java.sql.SQLOutput; import java.util.concurrent.CountDownLatch; /** 任意两个皇后都不能处于同一行同一列或者同一斜线上,问有多少中摆法 8*8有92种 1.第一个皇后放到第一行第一列…直到不冲突访问所有皇后,得到正确解 2.当得到正确解,栈将会回退到上一个栈时,开始回溯,即...原创 2019-09-24 18:00:16 · 229 阅读 · 0 评论 -
05-递归回溯
递归需要遵守的规则: 1.执行一个方法,就创建一个新的受保护的独立空间(栈) 2.方法的局部变量是独立的,不会相互影响,比如n变量 3.如果方法中使用的是引用类型的变量(如数组),就会共享该引用类型的数据 4.递归必须向退出递归的条件逼近,否则就是无限递归,出现stackOverflowError 5.当一个方法执行完毕,或者遇到return,就会返回,遵循谁调用,就将结果返回给谁 , 同时当方法...原创 2019-09-24 18:01:08 · 147 阅读 · 0 评论 -
06-排序算法-内部排序.交换排序.冒泡排序
package 内部排序.交换排序.冒泡排序; import java.util.Arrays; public class BubbleSort { public static void main(String[] args) { int arr[]={6,-8,43,3,9,-1,45}; // mintomax(arr); updateBubble(arr); // ...原创 2020-05-22 21:57:52 · 104 阅读 · 1 评论 -
06-排序算法-内部排序.交换排序.快速
package 内部排序.交换排序.快速; import java.util.Arrays; public class QuickSort { public static void main(String[] args) { int arr[]={6,-8,43,3,9,-1,45}; sortQuick(arr, 0, arr.length-1); System.out.println(Arra...原创 2019-09-24 18:04:40 · 100 阅读 · 1 评论 -
01稀疏数组与二维数组转换
import sun.font.FontRunIterator; /** 稀疏数组 row col value / public class Array { //向二维数组中添加指定元素 public static void narr(int arra[][],int row ,int col,int value){ arra[row][col]=value; } //遍历输出二维数组 publ...原创 2019-09-23 20:18:30 · 148 阅读 · 1 评论