数据结构与算法
数据结构与算法
[奸笑]这个不是斜眼笑[奸笑]
这个作者很懒,什么都没留下…
展开
-
图及图的相关算法(附习题)
边和权重:(A, B, 4), (A, C, 2), (B, C, 5), (B, D, 10), (C, D, 3), (C, E, 2), (D, E, 4)我们以图中的顶点和边的信息来举一个Dijkstra算法的习题。现在假设我们要从顶点A出发,使用Dijkstra算法来找到从A到其他顶点的最短路径和距离。这样就完成了使用Dijkstra算法来计算从A到其他顶点的最短路径和距离的过程。这样就完成了使用Dijkstra算法来计算从A到其他顶点的最短路径和距离的过程。顶点:A, B, C, D, E。原创 2024-01-04 20:24:27 · 1209 阅读 · 0 评论 -
线性表以及栈的常用习题以及解决思路
线性表是一种数据结构,是由n个具有相同特性的数据元素组成的有限序列。线性表中的数据元素之间存在着一对一的关系,即除了第一个元素外,每个元素都有且仅有一个直接前驱,除了最后一个元素外,每个元素都有且仅有一个直接后继。线性表可以用顺序存储结构或链式存储结构来实现。在顺序存储结构中,线性表的元素存储在一块连续的存储空间中;在链式存储结构中,线性表的元素通过指针相连,形成一个链表。线性表常见的操作包括插入、删除、查找等。原创 2024-01-04 20:11:57 · 382 阅读 · 0 评论 -
练习题--根据前序遍历和中序遍历计算后序遍历
通过以上演算,我们成功地根据给定的前序遍历和中序遍历结果构建了二叉树,并获取了其后序遍历结果。当给定前序遍历和中序遍历结果时,我们可以通过递归的方式来构建二叉树,并获取其后序遍历结果。然后我们在中序遍历结果中找到根节点的位置,即。最后,我们可以对构建的二叉树进行后序遍历,得到后序遍历结果为。,说明根节点在中序遍历结果中的位置是在索引为3的位置。首先,我们可以确定前序遍历的第一个元素。,可以得到左子树的根节点为。,可以得到右子树的根节点为。,对应的前序遍历结果为。,对应的前序遍历结果为。原创 2023-12-28 14:27:31 · 860 阅读 · 1 评论 -
哈希表:解决冲突的数据结构
哈希表是一种高效的数据结构,能够快速查找和访问键值对。但是,哈希冲突是不可避免的问题,因此解决冲突的方法对于设计一个高效的哈希表至关重要。链地址法和开放寻址法是常见的解决哈希冲突的方法,它们各有优缺点,需要根据具体的应用场景来选择合适的方法。原创 2023-12-28 14:21:01 · 629 阅读 · 0 评论 -
两数之和 II - 输入有序数组
题目要求:给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], target = 9 输出: [1,2] 解释: 2 与 7 之和等于目标数9 。因此 index1 =原创 2020-12-08 13:31:25 · 97 阅读 · 0 评论 -
验证回文串
题目要求:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1: 输入: “A man, a plan, a canal: Panama” 输出: true示例 2: 输入: “race a car” 输出: falseclass Solution { public boolean isPalindrome(String s) { if (s == null) return true;原创 2020-12-06 19:09:14 · 215 阅读 · 0 评论 -
122. 买卖股票的最佳时机 II
题目要求:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4] 输出: 7 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 =5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(原创 2020-12-03 17:12:02 · 74 阅读 · 0 评论 -
java leetcode 121. 买卖股票的最佳时机
题目要求给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 =6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。示例原创 2020-12-02 09:55:54 · 86 阅读 · 0 评论 -
Java数据结构--堆以及堆排序
Java数据结构–堆以及堆排序堆(Heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵完全二叉树的数组对象。堆类public class Heap<T extends Comparable<T>> { private T[] items; private int N; public Heap(int capacity) { this.items = (T[]) new Comparable[capacity+1原创 2020-06-14 09:36:54 · 264 阅读 · 1 评论 -
二叉树经典问题--折纸问题
二叉树经典问题–折纸问题请把纸条竖着放在桌⼦上,然后从纸条的下边向上⽅对折,压出折痕后再展 开。此时有1条折痕,突起的⽅向指向纸条的背⾯,这条折痕叫做“下”折痕 ;突起的⽅向指向纸条正⾯的折痕叫做“上”折痕。如果每次都从下边向上⽅ 对折,对折N次。请从上到下计算出所有折痕的⽅向。实现public class PagerFoldingTest { public static void main(String[] args) { Node<String> tree=cr原创 2020-06-13 20:15:24 · 403 阅读 · 1 评论 -
Java数据结构--快速排序
Java数据结构–快速排序定义:快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列排序类public class Quick { private static boolean less(Comparable v, Comparable w) { retur原创 2020-06-08 08:36:17 · 152 阅读 · 1 评论 -
Java数据结构--归并排序
Java数据结构–归并排序定义归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排序是一种稳定的排序方法。归并排序类public class Merge { private static Comparable[] assist; private s原创 2020-06-07 11:36:10 · 139 阅读 · 1 评论 -
Java数据结构--希尔排序
Java数据结构–希尔排序定义:希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。希尔排序类:public class Shell {原创 2020-06-06 10:49:41 · 138 阅读 · 1 评论 -
Java数据结构--循环链表
Java数据结构–循环链表循环链表类public class CircularLinkList<T> { private class Node<T> { T date; Node next; public Node(T date, Node next) { this.date = date; this.next = next; } } pr原创 2020-06-05 08:44:20 · 291 阅读 · 1 评论 -
Java数据结构--二叉树
Java数据结构–二叉树二叉树类package 二叉树;import 队列.MyQueue;public class BinaryTree<Key extends Comparable<Key>, Value> { private class Node { private Key key; private Value value; private Node left; private Node ri原创 2020-06-04 09:47:03 · 132 阅读 · 1 评论 -
java数据结构--队列
java数据结构–队列队列类import java.util.Iterator;public class MyQueue<T> implements Iterable<T> { private class Node<T> { private T data; private Node<T> next; public Node(T data, Node<T> next) {原创 2020-06-03 11:13:52 · 128 阅读 · 1 评论 -
Java数据结构--栈
Java数据结构–栈栈类:import java.util.Iterator;public class MyStack<T> implements Iterable<T> { private class Node<T> { private T data; private Node next; public Node(T data, Node next) { this.data =原创 2020-06-02 09:00:40 · 167 阅读 · 1 评论 -
Java数据结构--线性表
Java数据结构–线性表线性表类public class SequenceList<T> implements Iterable{ private final int DEFAULTCAPACITY=8099; private int capacity; private T[] table; private int length; SequenceList(){ new SequenceList<T>(DEFAULTCA原创 2020-06-01 09:34:13 · 112 阅读 · 1 评论 -
Java数据结构--双向链表
Java数据结构–双向链表双向链表类import java.util.Iterator;public class TowWayLinkList<T> implements Iterable<T> { private class Node<T> { private T item; private Node<T> next; private Node<T> pre;原创 2020-05-31 09:11:54 · 140 阅读 · 1 评论 -
Java数据结构--链表
Java数据结构–链表链表是一种基础的数据结构,相对于数组,他的增加和删除的时间复杂度减低链表类import java.util.Iterator;public class LinkList<T> implements Iterable<T> { private Node head; private int length; private class Node<T> { T item; Node n原创 2020-05-30 10:42:12 · 138 阅读 · 1 评论