![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
好想学习呀
我也想写出优质代码
展开
-
递归回溯算法理解八皇后问题
我这是一个简短的4个皇后的摆放问题,这样的摆法是有2种的. 还需要多多理解这个递归回溯的思路. 真的太抽象了.解决写递归的思路,就是我只要写出来种可能的摆放, 剩下的问题就是在我这种可能摆放的基础上进行递增.package Recursion;import java.util.Arrays;/** * @author ct_start * @create 2021 -08 -27 **/// 八皇后问题public class Recursion05 { // 使用一维数组来原创 2021-08-28 22:58:57 · 155 阅读 · 0 评论 -
递归解决迷宫回溯问题
package Recursion;import java.util.Arrays;/** * @author ct_start * @create 2021 -08 -27 **/// 迷宫问题public class Recursion02 { public static void main(String[] args) { // 二维数组模拟迷宫 int arr [] [] =new int [8][7]; // 8行 7列 但是数组的下原创 2021-08-27 21:31:39 · 119 阅读 · 0 评论 -
旋转数组(算法刷题)
package Array;import java.util.Arrays;/** * @author ct_start * @create 2021 -07 -20 **/// 数组的反转 输入k , 将指定的数组进行反转 例如 : [1,2,3,4,5] k=2 [5,4,1,2,3]public class ReverseArray { public static void main(String[] args) { int arr[]={1,2,3原创 2021-07-20 20:09:52 · 72 阅读 · 0 评论 -
青蛙跳台阶问题
青蛙跳台阶问题: 一个青蛙每次跳台阶只能跳一步或者两步,请问跳上N级台阶有多少种跳法.解题思路: 这是一个斐波那契的问题,每一阶层的跳法等于前两次跳台阶之和. 即 f(n)=f(n-1)+f(n-2)所以, 直接用递归写出一个斐波那契数列即可.public class Test { public static void main(String[] args) { int i = Fie_Bo(3); System.out.println(i); }原创 2021-07-16 07:50:00 · 143 阅读 · 0 评论 -
数组里面按奇数和偶数,进行排列
package com.example.demo.Service;import java.util.Arrays;// 将数组里面的数据按照奇数 偶数 排序public class Service_2 { public static void main(String[] args) { int a[]={1,4,5,6,7,8,2}; // 1 5 7 Service_2.order(a,0,a.length-1); System.out.p原创 2021-07-14 10:47:30 · 287 阅读 · 0 评论 -
使用哈夫曼树实现哈夫曼编码的压缩
总体而言就是路径的统计那里我想了好久,还需要深刻理解递归的思想.package HuffmanCode;import java.util.*;public class HuffmanCodeDemo01 { public static void main(String[] args) { String content = "i like like like java do you like a java"; byte[] bytes = content.原创 2021-05-26 21:51:11 · 95 阅读 · 1 评论 -
使用HashMap统计数组中每个数出现的次数
package HashMapUse;import java.util.HashMap;public class HashMapUseDemo01 { public static void main(String[] args) { int arr[]={1,1,5,5,3,3,3}; HashMap<Integer, Integer> integerIntegerHashMap = new HashMap<>();原创 2021-05-26 19:59:27 · 1852 阅读 · 0 评论 -
快速排序实现
package TestDemo01;import java.util.Arrays;public class QuickSort { public static void main(String[] args) { int [] arr={5,4,3,8,7}; sort(0,arr.length-1,arr); System.out.println(Arrays.toString(arr)); } pu原创 2021-05-26 16:23:07 · 50 阅读 · 1 评论 -
最全单链表的反转解析(我的总结)
说实话这个单链表的反转我至少写了4次,每次都有新的体会,普通人学数据结构真就得记下来.我的思路就是,有两个注意点需要实现: ① 如何遍历的实现每个节点② 如何把遍历到的节点插入进去核心代码public HerNode revers(Link link){// 需要两根指针temp=head.next; // 指向头节点的下一个next=temp.next; // 防止后面的节点断裂while(temp!=null){ // 判断当前节点是否为空,为空是不用进行反转的// 我们首先需原创 2021-05-12 17:31:59 · 175 阅读 · 0 评论 -
基数排序看这一篇就够了,看不懂你来打我!!!
一: 什么是基数排序 (简单的说就是从个位数开始,再排十位数,再排百位… 位数不够补0)①基数排序属于“分配排序”, 它是通过键值的各个值,将要排序的的元素分配至某些桶中,达到排序的目的②基数排序是属于稳定的排序,基数排序的效率高的稳定排序的排序法③基数排序是桶排序的扩展二: 我们需要用二维数组模拟 (0-9) 这几个数的桶,依次取出待排序的数,再进行取出三: 我这里直接举例只有个位数的排序,多位数的就再写一遍即可import java.util.Arrays;public class原创 2021-04-23 11:32:35 · 188 阅读 · 1 评论 -
快速排序两种思路
这个排序我还是不理解,先把它记录下来,对于递归的思想我的觉悟还不够呀。package QuickSort;import java.util.Arrays;public class QuickSort { public static void main(String[] args) { int arr[]={-9,78,0,23,-567,70}; quickSort(arr,0,arr.length-1); System.out.print原创 2021-04-19 16:12:18 · 53 阅读 · 0 评论 -
感觉自己好笨,不适合做java程序员
今天,同学给我出了一个题目: 给定一个长度为5的数组,向里面添加随机数,保证数组里面的数不重复,输出数组的值。这个题目,开始我还蛮有信心的,可是上手写的时候,一大堆问题,发现自己是真的菜。足足弄了5个小时… 一度怀疑自己的能力package Day02;import java.util.Random;public class Array { Random random; int nextInt; int[] ar; public static void main(String ars原创 2021-03-11 18:48:57 · 659 阅读 · 2 评论 -
底层源码分析HashMap的实现原理
HashMap的底层实现原理① 以Jdk7为例进行说明:HashMap map=new HashMap();在实例化以后底层创建了一个长度是16的一维数组 Entry[] table.在执行过很多次put之后...在调用map.put(key,value)首先调用key所在类的hashcode方法计算哈希值,此哈希值经过某种算法计算以后,得到Entry数值的存放位置,如果此位置为空,则直接添加。--->添加成功 情况一 如果此位置上的哈希值与key的哈希值不同,此时的key添加成功原创 2021-02-09 18:38:16 · 73 阅读 · 1 评论 -
底层源码分析Java集合Collection中的方法以及Collection实现类的
一: Java集合框架的概述集合和数组都是对多个数据进行存储操作的容器,简称 Java 容器(此时的存储主要指的是内存层面的存储,不涉及到持久化存储(持久化存储:硬盘,服务器))二:集合与数组的比较1.1数组在存储多个数据方面的特点> 一旦初始化以后长度就确定了,不可以对长度进行修改> 定义数组的时候需要指定数组的元素类型,数组定义好以后,数组元素的类型也就确定了> 也会表现出多态性1.2 数组的缺点> 一旦初始化后长度不可修改> 数组中提供的方原创 2021-02-07 21:02:11 · 144 阅读 · 1 评论 -
Java 计算任意两天之间相隔的天数
在学习了Java中的Date类相关的方法之后,我试着自己写了小程序可以计算任意两天之间相隔的天数,挺好用的。设计思路:运用Date类中提供的getTime()方法,获取输入的日期与1990-01-01 之间的毫秒差将获取到的两个毫秒数相减,再把相减得来的差值化简成天,就是相差的天数了package SimpleDateFormate;import java.text.ParseException;import java.text.SimpleDateFormat;import java.原创 2021-02-01 22:40:19 · 1510 阅读 · 3 评论 -
获取两个字符串中最长相同字串
解题思路:首先,需要将短的字符串做递减,然后调用String类中的contains()方法,判断短的字符串是否存在于长的字符串中然后,我们可以使用循环语句依次取出缩短后的字符串(注意:该字符串中的每个字符都必须取出)如果找到则返回找到的字符串class StringTest3{ public static String getMaxSubString(String s1,String s2) { String max = "",min = "";原创 2021-01-30 21:27:17 · 924 阅读 · 2 评论 -
将指定字符串进行反转
今天看了一下算法的题目,发现自己是真的菜。很简单的反转字符串都想了好久,要继续努力呀!解题思路:1.首先需要将字符串转变为字符型( 调用toCharArray()方法)2.再将最后一个字符赋给第一个字符(如果是奇数个中间的字符保持不变)3 再将调换完位置后新的字符,重新变为字符串(调用new String()方法)@Test /* 将指定字符串进行反转 */ public void Test2(){ String s="abcd原创 2021-01-30 21:18:00 · 201 阅读 · 3 评论