数据结构
hello_fjm
这个作者很懒,什么都没留下…
展开
-
实现简易版——MyLinkedList
class Node{ String val; Node pre; //双向 Node next; Node(String val){ this.val = val; }}public class MyLinkedList { private Node head; //头结点 private Node last; //尾结点 private int size; //链表中当前元素个数 public boo.原创 2020-12-26 17:17:20 · 186 阅读 · 0 评论 -
二分查找
二分查找的基础是数组有序。二分查找的过程: 从数组的中间开始查找,如果给定值与中间值相等,则查找成功;如果给定值小于中间值,则在左半部分查找;如果给定值大于中间值则在右边部分查。具体看下面代码和注释public class test { public static int find1(int[] arr,int n){ int left = 0; int right = arr.length; //左闭右开 [left,right) //区原创 2020-12-20 22:55:09 · 74 阅读 · 0 评论 -
Java中HashMap、LinkedHashMap、TreeMap的区别。敲黑板!!!
Map为<key,value>模型,根据key找到关联的value的值。Map中键不可以重复,值可以重复。1、HashMap根据键的HashCode值来存储数据,根据键可以直接获取值,有很快的访问速度。取得数据的顺序是随机的。 HashMap最多只允许一条键为null。2、LinkedHashMap**保存了记录的插入顺序,**在用Iterator遍历LinkedHashMap...原创 2020-03-03 21:46:46 · 225 阅读 · 0 评论 -
栈和队列
栈1、栈是一种先进后出的结构2、栈只允许在一端进行插入和删除操作3.自己实现栈的基本操作,如下:public class myStackByArrayList { //不考虑扩容 int[] array = new int[100]; int size = 0; //当前栈中的元素个数 //入栈 public void push(int val){ //判断栈是否为满 if(size == array.length)原创 2020-06-21 01:29:04 · 82 阅读 · 0 评论 -
队列实现栈
法一:两个队列实现栈package 队列实现栈;import java.util.*;//两个队列实现栈//q2为辅助队列public class myStack2 { public myStack2() { } Queue q1 = new LinkedList<>(); Queue q2 = new LinkedList<>(); public void push(int x) { q1.offer(x);原创 2020-06-21 01:01:49 · 79 阅读 · 0 评论 -
二叉树前中后序遍历——非递归
import java.util.ArrayList;import java.util.List;import java.util.Stack;class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } }public class s...原创 2020-04-07 22:12:57 · 95 阅读 · 0 评论 -
选择最少的广播台——贪心算法
广播台:k1 覆盖地区:“北京”,“上海”,“天津”广播台:k2 覆盖地区:“广州”,“北京”,“深圳”广播台:k3 覆盖地区:“成都”,“上海”,“杭州”广播台:k4 覆盖地区 :“上海”,“天津”广播台:k5 覆盖地区:“杭州”,“大连”//如何选择最少的广播台,让所有地区都可以接收到信号?//贪心算法:是指在对问题进行求解时,在每一步的选择中都采取...原创 2020-04-04 22:46:14 · 246 阅读 · 1 评论 -
用队列实现栈的基本操作
//队列实现栈 //方法一:一个队列实现栈class MyStack { /** Initialize your data structure here. */ public MyStack() { } Queue<Integer> q = new LinkedList(); /** Push element x onto...原创 2020-03-24 21:52:52 · 263 阅读 · 0 评论 -
动态规划——数字和为sum的方法数
题目描述: 给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数。当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案。输入描述:输入为两行:第一行为两个正整数n(1 ≤ n ≤ 1000),sum(1 ≤ sum ≤ 1000)第二行为n个正整数Ai,以空格隔开。输出描述:输出所求的方案数示例:输入:5 155 5 10 2 3...原创 2020-03-17 18:12:30 · 453 阅读 · 0 评论 -
基于比较的排序(二)
冒泡排序原理在无序区间,通过相邻数的比较,将最大的树冒泡到无序区间的最后,持续此过程,直到数组整体有序实现public static void bubbleSort(int[] array){for(int i = 0 ;i < array.length -1;i++){//要跑array.length-1趟for(int j = 0;j < array.length -...原创 2019-10-10 20:10:03 · 80 阅读 · 0 评论 -
基于比较的排序(一)
七大基于比较的排序一、直接插入排序1、原理整个区间被分成有序区间和无序区间;选择无序区间的第一个元素插入到有序区间合适的位置2、实现public static void insertSort(int[] array){for(int i =1;i < array.length;i++){//有序区间[0,i)//无序区间[i,array.length)int v = ar...原创 2019-10-09 18:17:02 · 126 阅读 · 0 评论