![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
qq_41550511
终身学习~
展开
-
给定一个整数,从这个整数当中删除k个数,使得得到的新整数最大(最小)
1.给定一串数字,删除k个数,使得得到的结果最大思路:例如"93476251"这个整数,要使得得到的整数最大,也就是使得高位的数字尽可能地大,因此从头开始遍历,对于每一小段降序的数字,删除其中最小的一个数字。即每一小段降序的数字分别为“93”,“4”,“762”,…。当删除到第k个时,停止。public class TheMaxNum { public static void main(String[] args) {// Scanner sc = new Scanner(Sy原创 2021-11-10 22:12:37 · 695 阅读 · 0 评论 -
刷题
1.剑指offer-链表-从尾到头打印链表利用ArrayList的add(index,value)方法,指定index位置添加value值。在遍历listNode的同时将每个结点的值都插入到index为0的位置,最后返回的ArrayList的值便是链表逆序值。时间复杂度和空间复杂度均为O(n)。也可以使用栈来存储遍历到的每个结点的值,但是这样会有额外的空间消耗。import java.util.ArrayList;public class Solution { public ArrayLis原创 2021-10-31 18:16:40 · 183 阅读 · 0 评论 -
数据结构---线性表
一、线性表1.1顺序表顺序表在计算机内存中以数组的形式保存线性表,线性表的顺序存储是指用一组地址连续的存储单元,依次存储线性表中的各个元素,使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系。ArrayList1.底层使用数组来实现1.2链表单链表:package linear;import java.util.Iterator;public class LinkList<T> implem原创 2021-10-29 22:18:52 · 107 阅读 · 0 评论 -
各大排序算法稳定性
各大排序算法稳定性分析冒泡排序只有当arr[j] > arr[j+1]时,才会交换元素的位置,而相等的时候并不交换位置,因此冒泡排序是一种稳定的排序算法。选择排序选择排序是给每个位置选择当前元素最小的,例如:[5(1),8,5(2),2,9],第一遍选择到的最小元素为2,所以5(1)会和2进行交换位置,此时5(1)到了5(2)后面,破坏了稳定性。因此选择排序是一种不稳定的排序算法。插入排序比较是从有序序列的末尾开始,也就是想要插入的元素和已经有序的最大者开始相比,如果比它大则直接插入到其后原创 2021-10-28 16:02:37 · 157 阅读 · 0 评论 -
归并排序和快速排序Java
递归定义方法时,在方法内部调用方法本身,称为递归。递归能够将一个大型复杂的问题,转换为一个与原问题相似的,规模较小的问题来求解。注意:在递归中,不能无限制地调用自己,必须要有边界条件,能够让递归结束,因为每一次递归调用都会在栈内存开辟新的空间,重新执行方法,如果递归的层级太深,很容易造成栈内存溢出。归并排序...原创 2021-10-28 15:01:51 · 127 阅读 · 0 评论 -
希尔排序Java
希尔排序原理1.选定一个增长量h,按照增长量h作为数据分组的依据,对数据进行分组;2.对分好组的每一组数据完成插入排序;3.减小增长量,最小减为1,重复第二步操作。(减为1时,整个数组被分为一组)增长量h如何确定int h=1while(h < 数组的长度/2) { h=2h+1;}循环结束后就可以确定h的最大值h的减小规则为: h=h/2代码package sort;import java.util.Arrays;public class ShellSor原创 2021-10-27 21:06:17 · 134 阅读 · 0 评论 -
插入排序Java实现
插入排序原理1.将所有的元素分为两组,已经排序的和未排序的;2.依次遍历未排序中的每个元素,将其向已经排序的组中进行插入;3.倒叙遍历已经排序的元素,依次和待插入的元素进行比较,直到找到一个元素小于等于待插入的元素,将这个待插入的元素放到这个位置,其他的元素向后移动一位。package sort;import java.util.Arrays;public class InsertSort { public static void main(String[] args) {原创 2021-10-27 16:59:00 · 62 阅读 · 0 评论 -
选择排序Java
选择排序算法原理1.每一次遍历的过程中,都假定第一个索引处的元素是最小值,和其他索引处的值依次进行比较,如果当前索引处的值大于其他的某个索引处的值,就假定其他某个索引处的值为最小值,通过遍历一趟,就可找出待排序部分中最小值所在的索引。2.交换第一个索引处的值和最小值所在的索引处的值。package sort;import java.util.Arrays;public class SelectionSort { public static void main(String[] arg原创 2021-10-27 16:37:56 · 88 阅读 · 0 评论 -
leetcode
链表判断链表是否有环public class Solution { public boolean hasCycle(ListNode head) { if (head == null) return false; ListNode fast = head; ListNode slow = head; while (fast != null && fast.next != null) { slo原创 2021-10-04 23:28:17 · 47 阅读 · 0 评论 -
冒泡排序Java
1.package sort;public class BubbleSort { public static void main(String[] args) { int[] arr = new int[]{3,5,23,54}; BubbleSort(arr); for (int i = 0;i < arr.length;i++) { System.out.println(arr[i]); }原创 2021-10-26 23:11:33 · 96 阅读 · 0 评论 -
数据结构 笔记
数据结构:数据结构:组合和存储数据的。分为逻辑结构和物理结构两大类。逻辑结构:1.集合结构:集合结构中数据元素除了属于同一个集合外,它们之间没有任何其它的关系。2.线性结构:数据元素之间存在一对一的关系。3.树形结构:一对多。...原创 2021-10-26 23:07:45 · 105 阅读 · 0 评论 -
数据结构与算法
数据结构与算法数组 栈 队列 链表 树 图 堆 散列栈和堆概念① 堆可以看作是一棵树的数组对象。堆的性质:+ 堆中的某个节点的值总是小于等于或者大于等于其父节点的值。+ 堆总是一棵完全二叉树。将根节点最大的堆叫做大根堆,根节点最小的堆叫做小根堆。② 栈是一种具有后进先出性质的数据结构。内存分配中的栈和堆堆:堆是jvm的一块内存区域。存储的是数组和对象(其实数组就是对象),new的东西都是在堆中,堆不会随时释放空间,但是会有垃圾回收机制。(栈中存放的是单个变量,变量释放后,就没原创 2021-10-12 15:53:25 · 52 阅读 · 0 评论