<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Poem_coder的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Poem_coder</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Poem_coder]]></copyright><item><title><![CDATA[反射枚举及lambda的使用]]></title><link>https://blog.youkuaiyun.com/Poem_coder/article/details/124365858</link><guid>https://blog.youkuaiyun.com/Poem_coder/article/details/124365858</guid><author>Poem_coder</author><pubDate>Sun, 24 Apr 2022 20:38:19 +0800</pubDate><description><![CDATA[一、反射                  
]]></description><category></category></item><item><title><![CDATA[数据结构之Map和Set总结]]></title><link>https://blog.youkuaiyun.com/Poem_coder/article/details/124310610</link><guid>https://blog.youkuaiyun.com/Poem_coder/article/details/124310610</guid><author>Poem_coder</author><pubDate>Sat, 23 Apr 2022 12:17:42 +0800</pubDate><description><![CDATA[一、概念与模型

1.概念：Map和set是一种专门用来进行搜索的容器或者数据结构，其搜索的效率与其具体的实例化子类有关。以前常见的搜索方式有： ①直接遍历，时间复杂度为O(N)，元素如果比较多效率会非常慢 ②二分查找，时间复杂度为O(logN),但搜索前必须要求序列是有序的 。上述排序比较适合静态类型的查找，即一般不会对区间进行插入和删除操作了，而现实中的查找比如： ①根据姓名查询考试成绩 ②通讯录，即根据姓名查询联系方式 ③不重复集合，即需要先搜索关键字是否已经在集合中，可能在查找时进行一些插入和删除的]]></description><category></category></item><item><title><![CDATA[数据结构之泛型总结]]></title><link>https://blog.youkuaiyun.com/Poem_coder/article/details/124301994</link><guid>https://blog.youkuaiyun.com/Poem_coder/article/details/124301994</guid><author>Poem_coder</author><pubDate>Wed, 20 Apr 2022 21:41:05 +0800</pubDate><description><![CDATA[目录

一、泛型类的引出

二、泛型类的定义和使用

三、泛型的编译

四、泛型的上界

五、泛型方法

六、通配符

1.什么是通配符：

2.通配符可以解决的泛型问题：

3.通配符的上界

4.通配符的下界

一、泛型类的引出

1.什么是泛型

一般的类和方法，只能使用具体的类型: 要么是基本类型，要么是自定义的类。如果要编写可以应用于多种类型的代码，这种刻板的限制对代码的束缚就会很大。泛型是在JDK1.5引入的新的语法，通俗讲，泛型：就是适用于许多类型。从代码上讲，就是对类型实现了参数化。 


]]></description><category></category></item><item><title><![CDATA[数据结构之排序]]></title><link>https://blog.youkuaiyun.com/Poem_coder/article/details/124115303</link><guid>https://blog.youkuaiyun.com/Poem_coder/article/details/124115303</guid><author>Poem_coder</author><pubDate>Tue, 19 Apr 2022 22:15:20 +0800</pubDate><description><![CDATA[一、概念

1.排序

排序：就是使一串记录，按照其中的某个或某些关键字的大小，递增或递减的排列起来的操作。通常意义上的排序，都是指的原地排序(in place sort)

2.稳定性

两个相等的数据，如果经过排序后，排序算法能保证其相对位置不发生变化，则我们称该算法是具备稳定性的排序算法

3.常见基于比较的排序总览



二、插入排序

1.原理：整个区间被分为①有序区间②无序区间，每次选择无序区间的第一个元素，在有序区间内选择合适的位置插入。

过程如图所示：就拿12 5 9 4 10这组数据为例]]></description><category></category></item><item><title><![CDATA[数据结构之优先级队列（堆）]]></title><link>https://blog.youkuaiyun.com/Poem_coder/article/details/123755968</link><guid>https://blog.youkuaiyun.com/Poem_coder/article/details/123755968</guid><author>Poem_coder</author><pubDate>Tue, 29 Mar 2022 12:07:50 +0800</pubDate><description><![CDATA[一、二叉树的顺序存储

使用数组保存二叉树结构，方式即将二叉树用层序遍历方式放入数组中。 一般只适合表示完全二叉树，因为非完全二叉树会有空间的浪费。 这种方式的主要用法就是堆的表示。如图所示：



下标的一些关系：


已知双亲(parent)的下标，则： 

    左孩子(left)下标 = 2 * parent + 1; 

右孩子(right)下标 = 2 * parent + 2; 

已知孩子（不区分左右）(child)下标，则： 

双亲(parent...]]></description><category></category></item><item><title><![CDATA[Java对象的比较]]></title><link>https://blog.youkuaiyun.com/Poem_coder/article/details/123779648</link><guid>https://blog.youkuaiyun.com/Poem_coder/article/details/123779648</guid><author>Poem_coder</author><pubDate>Mon, 28 Mar 2022 22:49:33 +0800</pubDate><description><![CDATA[一、基本类型的比较
]]></description><category></category></item><item><title><![CDATA[二叉树前中后序的非递归遍历]]></title><link>https://blog.youkuaiyun.com/Poem_coder/article/details/123754231</link><guid>https://blog.youkuaiyun.com/Poem_coder/article/details/123754231</guid><author>Poem_coder</author><pubDate>Sat, 26 Mar 2022 14:48:23 +0800</pubDate><description><![CDATA[目录

一、前序非递归遍历

二、中序非递归

三、后序非递归

我们先分析前序的非递归遍历，中序和后序与此类似。

我们也可以用迭代的方式实现方法一的递归函数，两种方式是等价的，区别在于递归的时候隐式地维护了一个栈，而我们在迭代的时候需要显式地将这个栈模拟出来，其余的实现与细节都相同。

一、前序非递归遍历

前序遍历：根-&gt;左-&gt;右




class Solution {
    public List&lt;Integer&gt; preorderTraversal(TreeNode r]]></description><category></category></item><item><title><![CDATA[平衡二叉树]]></title><link>https://blog.youkuaiyun.com/Poem_coder/article/details/123746907</link><guid>https://blog.youkuaiyun.com/Poem_coder/article/details/123746907</guid><author>Poem_coder</author><pubDate>Fri, 25 Mar 2022 23:14:19 +0800</pubDate><description><![CDATA[一、题目



二、思路

1.一棵树要是平衡二叉树，那么它的每颗子树都要是平衡二叉树

2.root左树的高度-右树的高度&lt;=1

时间复杂度：O(n^2)，其中 n是二叉树中的节点个数。
最坏情况下，二叉树是满二叉树，需要遍历二叉树中的所有节点，时间复杂度是 O(n)。
对于节点 p，如果它的高度是 d，则 height(p) 最多会被调用 d 次（即遍历到它的每一个祖先节点时）。对于平均的情况，一棵树的高度 h 满足 O(h)=O(logn)，因为 d≤h，所以总时间复杂度为 O(nlogn)。]]></description><category></category></item><item><title><![CDATA[另一棵树的子树]]></title><link>https://blog.youkuaiyun.com/Poem_coder/article/details/123724180</link><guid>https://blog.youkuaiyun.com/Poem_coder/article/details/123724180</guid><author>Poem_coder</author><pubDate>Thu, 24 Mar 2022 23:38:37 +0800</pubDate><description><![CDATA[一、题目





二、思路

1.先判断两棵树是不是两颗相同的树

2.如果不是，那么分别判断subRoot是不是root的左子树或者右子树（换句话来说，就是，subRoot和root的左子树或右子树是不是同一颗树）

三、代码实现


class Solution {
    private boolean isSameTree(TreeNode p, TreeNode q) {
        if(p == null &amp;&amp; q == null){
            retur.]]></description><category></category></item><item><title><![CDATA[检查两棵树是否相同]]></title><link>https://blog.youkuaiyun.com/Poem_coder/article/details/123698714</link><guid>https://blog.youkuaiyun.com/Poem_coder/article/details/123698714</guid><author>Poem_coder</author><pubDate>Wed, 23 Mar 2022 22:56:47 +0800</pubDate><description><![CDATA[目录

一、题目

二、思路

三、代码实现

一、题目



二、思路

1.如果两个二叉树都为空，则两个二叉树相同

2.如果两个二叉树中有且只有一个为空，则两个二叉树一定不相同

3.如果两个二叉树都不为空，那么首先判断它们的根节点的值是否相同，若不相同则两个二叉树一定不同，若相同，再分别判断两个二叉树的左子树是否相同以及右子树是否相同

三、代码实现


class Solution {
    public boolean isSameTree(TreeNode p, TreeNode q) {
]]></description><category></category></item><item><title><![CDATA[数据结构之二叉树]]></title><link>https://blog.youkuaiyun.com/Poem_coder/article/details/123589309</link><guid>https://blog.youkuaiyun.com/Poem_coder/article/details/123589309</guid><author>Poem_coder</author><pubDate>Tue, 22 Mar 2022 22:18:28 +0800</pubDate><description><![CDATA[一、树形结构
]]></description><category></category></item><item><title><![CDATA[用栈实现队列]]></title><link>https://blog.youkuaiyun.com/Poem_coder/article/details/123588997</link><guid>https://blog.youkuaiyun.com/Poem_coder/article/details/123588997</guid><author>Poem_coder</author><pubDate>Sun, 20 Mar 2022 13:13:54 +0800</pubDate><description><![CDATA[目录

一、题目

二、思路

三、代码实现

一、题目



二、思路

1.入队的时候统一入到第一个栈

2.出队的时候统一出第二个栈的元素，如果第二个栈为空，那么就把第一个栈里面的所有元素导过来，然后再出栈顶元素



三、代码实现


class MyQueue {

    public Stack&lt;Integer&gt; stack1;
    public Stack&lt;Integer&gt; stack2;

    public MyQueue() {
        sta..]]></description><category></category></item><item><title><![CDATA[用队列实现栈]]></title><link>https://blog.youkuaiyun.com/Poem_coder/article/details/123582148</link><guid>https://blog.youkuaiyun.com/Poem_coder/article/details/123582148</guid><author>Poem_coder</author><pubDate>Sat, 19 Mar 2022 09:17:09 +0800</pubDate><description><![CDATA[目录

一、题目

二、思路

三、代码实现

一、题目



二、思路

1.入栈的时候，入到不为空的队列，刚开始都为空指定入到一个队列

2.入栈的时候，找到不为空的队列，出size-1个元素到另一个队列中，剩下的这个元素就是出栈的元素

如图所示：



三、代码实现


class MyStack {

    private Queue&lt;Integer&gt; qu1;
    private Queue&lt;Integer&gt; qu2;

    public MyStack() {]]></description><category></category></item><item><title><![CDATA[数据结构之队列]]></title><link>https://blog.youkuaiyun.com/Poem_coder/article/details/123565750</link><guid>https://blog.youkuaiyun.com/Poem_coder/article/details/123565750</guid><author>Poem_coder</author><pubDate>Fri, 18 Mar 2022 11:46:27 +0800</pubDate><description><![CDATA[目录

一、什么是队列Queue

二、Queue的一些方法

三、什么是双端队列Deque

四、Deque的一些方法

五、队列Queue的实现

六、循环队列

一、什么是队列Queue

1.队列：只允许在一端进行插入数据操作，在另一端进行删除数据操作的特殊线性表，队列具有先进先出FIFO(First In First Out) 



2.入队列：进行插入操作的一端称为队尾（Tail/Rear）



3.出队列：进行删除操作的一端称为队头（Head/Front）



二、Queue的一些方..]]></description><category></category></item><item><title><![CDATA[数据结构之栈]]></title><link>https://blog.youkuaiyun.com/Poem_coder/article/details/123317795</link><guid>https://blog.youkuaiyun.com/Poem_coder/article/details/123317795</guid><author>Poem_coder</author><pubDate>Tue, 15 Mar 2022 21:38:00 +0800</pubDate><description><![CDATA[一、栈的概念

1.栈：一种特殊的线性表，其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈 顶，另一端称为栈底。栈中的数据元素遵守后进先出LIFO（Last In First Out）的原则



2.压栈：栈的插入操作叫做进栈/压栈/入栈，入数据在栈顶



3.出栈：栈的删除操作叫做出栈。出数据在栈顶



4.别的一些栈：

（1）虚拟机栈(JVM Stack): 一块具有栈的特性的内存，重点是存储局部变量表(当然也有其他信息)



    栈帧：在调用函数时...]]></description><category></category></item><item><title><![CDATA[实现最小栈]]></title><link>https://blog.youkuaiyun.com/Poem_coder/article/details/123512540</link><guid>https://blog.youkuaiyun.com/Poem_coder/article/details/123512540</guid><author>Poem_coder</author><pubDate>Tue, 15 Mar 2022 21:36:37 +0800</pubDate><description><![CDATA[一、题目



二、思路



三、代码实现


class MinStack {

    private Stack&lt;Integer&gt; stack;
    private Stack&lt;Integer&gt; minStack;

    public MinStack() {
        stack = new Stack&lt;&gt;();
        minStack = new Stack&lt;&gt;();
    }
    
    public void .]]></description><category></category></item><item><title><![CDATA[有效的括号匹配]]></title><link>https://blog.youkuaiyun.com/Poem_coder/article/details/123510961</link><guid>https://blog.youkuaiyun.com/Poem_coder/article/details/123510961</guid><author>Poem_coder</author><pubDate>Tue, 15 Mar 2022 21:03:29 +0800</pubDate><description><![CDATA[目录

一、题目

二、思路

三、代码实现

一、题目



二、思路

1.有三种考虑的方向：

（1）(()左括号多

（2）())右括号多

（3）([)]左右括号不匹配

2.使用栈来实现本题

（1）如果遇到左括号就入栈

（2）如果遇到右括号，就比较栈顶元素和当前的右括号是否匹配，如果匹配则出栈

（3）因为栈当中存储的左括号，当遍历完整个字符串，栈还是不为空的，则左括号多，否则右括号多

三、代码实现


class Solution {
    public boolean isValid]]></description><category></category></item><item><title><![CDATA[栈的压入、弹出序列]]></title><link>https://blog.youkuaiyun.com/Poem_coder/article/details/123320374</link><guid>https://blog.youkuaiyun.com/Poem_coder/article/details/123320374</guid><author>Poem_coder</author><pubDate>Sun, 06 Mar 2022 23:56:36 +0800</pubDate><description><![CDATA[一、题目描述

输入两个整数序列，第一个序列表示栈的压入顺序，请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序，序列4,5,3,2,1是该压栈序列对应的一个弹出序列，但4,3,5,1,2就不可能是该压栈序列的弹出序列。

1. 0&lt;=pushV.length ==popV.length &lt;=1000

2. -1000&lt;=pushV[i]&lt;=1000

3.pushV的所有数字均不相同

示例1


输入：[1,...]]></description><category></category></item><item><title><![CDATA[逆波兰表达式]]></title><link>https://blog.youkuaiyun.com/Poem_coder/article/details/123319787</link><guid>https://blog.youkuaiyun.com/Poem_coder/article/details/123319787</guid><author>Poem_coder</author><pubDate>Sun, 06 Mar 2022 23:13:44 +0800</pubDate><description><![CDATA[目录

一、题目描述

二、思路

三、代码实现



一、题目描述



二、思路







三、代码实现


class Solution {
    public int evalRPN(String[] tokens) {
        Stack&lt;Integer&gt; stack = new Stack&lt;&gt;();

        for(int i = 0; i &lt; tokens.length; i++){
            String val = to.]]></description><category></category></item><item><title><![CDATA[Java顺序表之杨辉三角]]></title><link>https://blog.youkuaiyun.com/Poem_coder/article/details/123190425</link><guid>https://blog.youkuaiyun.com/Poem_coder/article/details/123190425</guid><author>Poem_coder</author><pubDate>Mon, 28 Feb 2022 20:22:56 +0800</pubDate><description><![CDATA[目录

一、题目

二、思路

三、代码实现



一、题目



二、思路



三、代码实现


import java.util.ArrayList;
import java.util.List;
class Solution{
   public List&lt;List&lt;Integer&gt;&gt; generate(int numRows){
        List&lt;List&lt;Integer&gt;&gt; ret = new ArrayList&lt;&gt;();
..]]></description><category></category></item></channel></rss>