数据结构
文章平均质量分 71
芷月_wyy
产品测试
展开
-
数据结构——堆
堆的定义:堆中某个结点的值总是不大于或不小于其父节点的值;堆总是一棵完全二叉树;将根节点最大的堆叫做最大堆或者大根堆;根节点最小的堆叫做最小堆或者小根堆。下图演示了如何从最大堆中取出堆顶元素...原创 2020-02-11 18:29:54 · 109 阅读 · 0 评论 -
数据结构——二分搜索树的实现
public class BST<E extends Comparable<E>> { private class Node{ public E e; public Node left,right; //构造函数,让用户传入的参数e等于这里的e public Node(E e){ this.e=e; left=null; right=n...原创 2020-02-10 14:37:40 · 169 阅读 · 0 评论 -
数据结构——链表的实现
public class LinkList<E> { private class node{ public E e; public node next; public node(E e,node next){ this.e=e; this.next=next; } public node(E e){ this(e,null); } ...原创 2020-01-29 13:24:34 · 239 阅读 · 0 评论 -
数据结构——数组队列与循环队列的实现
一.数组队列数组队列第一个元素出队,后面的元素要全部向前移动一位,同时size--,因此出队的时间复杂度是O(n)的复杂度。还是复用自己封装的动态数组:public class ArrayQueue<E> implements Queue { private MyArray<E> array; @Override public int getSiz...原创 2020-01-28 16:18:46 · 188 阅读 · 0 评论 -
数据结构——Stack的二次封装
public interface Stack<E> { int getSize(); boolean isEmpty(); void push(E e); E pop(); E peek();}import java.lang.reflect.Array; class ArrayStack<E> implements Stack<E&g...原创 2020-01-27 20:58:45 · 134 阅读 · 0 评论 -
数据结构——数组的二次封装
public class MyArray<E> {//泛型数组 private E[] data; //数组的容量private int size;//删除数组元素 private E remove(int index){ if(index<0||index>=0){ throw new IllegalArgumentException...原创 2020-01-27 17:36:09 · 178 阅读 · 0 评论 -
二叉树的重难点问题总结
一.二叉树的删除删除二叉树的一个结点要分为三种情况去处理:(1)该结点是一个叶子结点 处理办法:其双亲结点的相应指针域的值改为null(2)该结点只有左子树或者右子树 处理办法:其双亲结点指针域的值改为“指向被删除结点的左子树或右子树”(3)该结点既有左子树又有右子树 处理办法:用这个结点的前驱替换这个结点,然后删去前驱结点二.二叉树的重要性质...原创 2019-04-29 23:03:15 · 2201 阅读 · 0 评论 -
LeetCode做题总结:数组(3)
一.三数之和分析:这道题将三数之和实际上转化为两数之和在处理,让两个数字的和加起来等于目标数减去第一个数所得的差值即可。为了给随机的数组创造一些规律性,一般来说要对数组先排序,这道题就是这样的。排完序之后,因为三个正数的和不能等于0,所以这是一个剪枝的条件,这样减少所需的时间。要去除重复的三元组,你不可以用if(i>0&&nums[i]==nums[i-1]) co...原创 2019-03-13 10:22:22 · 203 阅读 · 0 评论 -
LeetCode做题总结:合并两个有序链表
这道题的思路就是用一对快慢指针,在一个循环里,快指针每次走两步,慢指针每次走一步,这样可以找到链表的二分之一位置。因为链表元素个数可能是奇数,也可能是偶数,所以循环终止条件是快指针的下一个结点不为空并且 下下个结点也不为空,当循环结束时,如果是偶数个结点,慢指针指向的元素是前半段的最后一个,如果是奇数个元素,慢指针指向的结点不是我们判断回文时需要考虑的。然后就对链表的后半部分进行反转...原创 2019-02-12 15:16:22 · 211 阅读 · 1 评论 -
LeetCode做题总结:二叉树
public class Solution15 { public int maxDepth(TreeNode root) { if(root==null) return 0; else return 1+Math.max(maxDepth(root.left),maxDepth(root.right)); } public static void main(Stri...原创 2019-02-17 18:19:28 · 285 阅读 · 0 评论 -
LeetCode做题总结:链表
一.删除链表中的节点 分析:这个方法也仅限于删除非末尾节点可用,不需要头结点。删除一个节点的时候将它赋值为下一个节点的值,然后将下一个节点删掉。 //结点信息类public class ListNode{ int val; ListNode next; ListNode(int x) {val=x;}}//node.next=new node(x)将结点连成链publ...原创 2019-02-11 18:29:53 · 355 阅读 · 0 评论 -
LeetCode做题总结:字符串(2)
一.实现strStr() class Solution { public int strStr(String haystack, String needle) { return haystack.indexOf(needle); }} 二.报数class Solution { public String countAndSay(int n){...原创 2019-02-10 18:22:41 · 378 阅读 · 0 评论 -
LeetCode做题总结:字符串转换整数(atoi)
这道题卡了很久,每次都考虑不全。而且网站又逢交必崩。有毒。我只能单独把这道题抽出来总结一下了。一.字符串转换整数 (atoi)请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个...原创 2019-02-10 10:53:14 · 179 阅读 · 0 评论 -
LeetCode做题总结:字符串
一.反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 示例 1:输入:["h","e","l","l","o"]输出:["o","l&qu原创 2019-02-09 19:09:27 · 819 阅读 · 0 评论 -
LeetCode做题总结:数组(2)
一.买卖股票的最佳时机 II给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股...原创 2019-02-05 23:00:24 · 960 阅读 · 0 评论 -
LeetCode做题总结:数组
本来是想直接复习数据结构的,但学姐建议我最好的复习方式是做题。对学姐的建议我是服气的,她的确很擅长学习。我现在刚刚开始在LeetCode上做题,实在不好意思用“刷”这个词,我做题是真的慢,实不相瞒,算法一直是我的软肋。好多时候自己根本找不到好的思路,所以在这里把我的思考过程,还有从别人那里借鉴到的好的思路都整理出来,日积月累总会有帮助。刚接触LeetCode,我选择的语言是java,看题目时没...原创 2019-02-04 23:07:20 · 379 阅读 · 0 评论 -
数据结构:线性表(学习篇1)
概念:线性表是零个或多个数据元素组成的有限序列。 ☼特点:线性表的元素是有序的 若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其余的元素有一个前驱和一个后继 线性表强调是有限的线性表插入操作:•如果插入位置不合理,抛出异常。•如果线性表长度大于等于数组长度,则抛出异常或动态增加数组容量。•从最后一...原创 2018-09-22 19:07:44 · 233 阅读 · 0 评论