<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[journey_TripleP的博客]]></title><description><![CDATA[What doesn't kill you will make you strongger]]></description><link>https://blog.youkuaiyun.com/journey_TripleP</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; journey_TripleP]]></copyright><item><title><![CDATA[T1]]></title><link>https://blog.youkuaiyun.com/journey_TripleP/article/details/100188120</link><guid>https://blog.youkuaiyun.com/journey_TripleP/article/details/100188120</guid><author>journey_TripleP</author><pubDate>Sun, 01 Sep 2019 21:23:51 +0800</pubDate><description><![CDATA[package test;

import java.util.HashSet;
import java.util.Scanner;

public class T3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextI...]]></description><category></category></item><item><title><![CDATA[【树】剑指Offer：二叉树中和为某一路径的值]]></title><link>https://blog.youkuaiyun.com/journey_TripleP/article/details/90639481</link><guid>https://blog.youkuaiyun.com/journey_TripleP/article/details/90639481</guid><author>journey_TripleP</author><pubDate>Tue, 28 May 2019 15:03:35 +0800</pubDate><description><![CDATA[【在线编程】二叉树中和为某一路径的值
【问题描述】
输入一颗二叉树的跟节点和一个整数，打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中，数组长度大的数组靠前)
【解题思路 &amp; Java实现】
思路：深度遍历二叉树，利用path记录每条路径，在左右子树中递归寻找满足条件的路径。
 import j...]]></description><category></category></item><item><title><![CDATA[【树】剑指Offer：二叉搜索树的后序遍历序列]]></title><link>https://blog.youkuaiyun.com/journey_TripleP/article/details/90634500</link><guid>https://blog.youkuaiyun.com/journey_TripleP/article/details/90634500</guid><author>journey_TripleP</author><pubDate>Tue, 28 May 2019 10:31:53 +0800</pubDate><description><![CDATA[【在线编程】二叉搜索树的后序遍历序列
【问题描述】
输入一个整数数组，判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
【解题思路 &amp; Java实现】
二叉搜索树(BST)：二叉搜索树又叫二叉查找树，指一棵空树或者具有下列性质的二叉树：

若任意节点的左子树不空，则左子树上所有结点的值均小于它的根结点的值；
若任意节点...]]></description><category></category></item><item><title><![CDATA[【树】剑指Offer：从上往下打印二叉树]]></title><link>https://blog.youkuaiyun.com/journey_TripleP/article/details/90632963</link><guid>https://blog.youkuaiyun.com/journey_TripleP/article/details/90632963</guid><author>journey_TripleP</author><pubDate>Tue, 28 May 2019 09:32:00 +0800</pubDate><description><![CDATA[【在线编程】从上往下打印二叉树
【问题描述】
从上往下打印出二叉树的每个节点，同层节点从左至右打印。
【解题思路 &amp; Java实现】
方法：树的层次遍历。借助辅助队列，每次存储树的一层，然后读取队列的第一个节点，将值存到结果ArrayList中去，并继续将该节点的下一层加入到队列中。
import java.util.ArrayList;
/**
public class TreeNode...]]></description><category></category></item><item><title><![CDATA[【树】剑指Offer:从上往下打印二叉树]]></title><link>https://blog.youkuaiyun.com/journey_TripleP/article/details/90514175</link><guid>https://blog.youkuaiyun.com/journey_TripleP/article/details/90514175</guid><author>journey_TripleP</author><pubDate>Fri, 24 May 2019 12:10:32 +0800</pubDate><description><![CDATA[【在线编程】从上往下打印二叉树
【问题描述】
从上往下打印出二叉树的每个节点，同层节点从左至右打印。
【解题思路 &amp; Java实现】
方法：二叉树的层次遍历，借助辅助队列，每次存储树的一层，然后读取队列的第一个节点，将值存到结果ArrayList中去，并继续将该节点的下一层加入到队列中。
import java.util.ArrayList;
/**
public class TreeNo...]]></description><category></category></item><item><title><![CDATA[【树】剑指Offer：二叉树的镜像]]></title><link>https://blog.youkuaiyun.com/journey_TripleP/article/details/90513648</link><guid>https://blog.youkuaiyun.com/journey_TripleP/article/details/90513648</guid><author>journey_TripleP</author><pubDate>Fri, 24 May 2019 11:36:10 +0800</pubDate><description><![CDATA[【在线编程】二叉树的镜像
【问题描述】
操作给定的二叉树，将其变换为源二叉树的镜像。
输入描述:

【解题思路 &amp;  Java实现】
首先：掌握二叉树的层次遍历，借用一个队列。
/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    publ...]]></description><category></category></item><item><title><![CDATA[【树】剑指Offer: 树的子结构]]></title><link>https://blog.youkuaiyun.com/journey_TripleP/article/details/90511948</link><guid>https://blog.youkuaiyun.com/journey_TripleP/article/details/90511948</guid><author>journey_TripleP</author><pubDate>Fri, 24 May 2019 10:23:50 +0800</pubDate><description><![CDATA[【在线编程】树的子结构
【问题描述】
输入两棵二叉树A，B，判断B是不是A的子结构。（ps：我们约定空树不是任意一个树的子结构）
【解题思路 &amp; Java实现】
思路：首先在 root1中找到与root2的根结点相等的结点（称为候选结点，有可能从该结点开始匹配到root2), 然后从该候选结点开始进行匹配root2。如果匹配成功，则返回true；如果匹配失败，则在root1的左子树中寻找下...]]></description><category></category></item><item><title><![CDATA[【树】剑指Offer: 重建二叉树]]></title><link>https://blog.youkuaiyun.com/journey_TripleP/article/details/90379434</link><guid>https://blog.youkuaiyun.com/journey_TripleP/article/details/90379434</guid><author>journey_TripleP</author><pubDate>Mon, 20 May 2019 17:51:15 +0800</pubDate><description><![CDATA[【在线编程】重建二叉树
【问题描述】
输入某二叉树的前序遍历和中序遍历的结果，请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}，则重建二叉树并返回。
【解题思路 &amp;  Java实现】
思路：分治法。因为前序遍历是 “根左右”，中序遍历是 “左根右”。所以从pre中第...]]></description><category></category></item><item><title><![CDATA[【栈和队列】剑指Offer:栈的压入、弹出序列]]></title><link>https://blog.youkuaiyun.com/journey_TripleP/article/details/90260840</link><guid>https://blog.youkuaiyun.com/journey_TripleP/article/details/90260840</guid><author>journey_TripleP</author><pubDate>Thu, 16 May 2019 11:57:46 +0800</pubDate><description><![CDATA[【在线编程】栈的压入、弹出序列
【问题描述】
输入两个整数序列，第一个序列表示栈的压入顺序，请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序，序列4,5,3,2,1是该压栈序列对应的一个弹出序列，但4,3,5,1,2就不可能是该压栈序列的弹出序列。（注意：这两个序列的长度是相等的）
【解题思路 &amp; Java实现】
思路：为了...]]></description><category></category></item><item><title><![CDATA[【栈和队列】剑指Offer: 包含min函数的栈]]></title><link>https://blog.youkuaiyun.com/journey_TripleP/article/details/90233293</link><guid>https://blog.youkuaiyun.com/journey_TripleP/article/details/90233293</guid><author>journey_TripleP</author><pubDate>Wed, 15 May 2019 11:58:28 +0800</pubDate><description><![CDATA[【在线编程】包含min函数的栈
【问题描述】
定义栈的数据结构，请在该类型中实现一个能够得到栈中所含最小元素的min函数（时间复杂度应为O（1））。
【解题思路 &amp; Java实现】
方法: stack栈用来存储数据，并借用辅助栈min同步记录stack每个状态下的最小值，也就是说让min的栈顶始终保持当前stack栈的最小元素，所以在stack栈进行 push 操作时，比较node和min...]]></description><category></category></item><item><title><![CDATA[【栈和队列】剑指Offer: 用两个栈实现一个队列]]></title><link>https://blog.youkuaiyun.com/journey_TripleP/article/details/90232236</link><guid>https://blog.youkuaiyun.com/journey_TripleP/article/details/90232236</guid><author>journey_TripleP</author><pubDate>Wed, 15 May 2019 11:15:12 +0800</pubDate><description><![CDATA[【在线编程】剑指Offer: 用两个栈实现一个队列
【问题描述】
用两个栈来实现一个队列，完成队列的Push和Pop操作。 队列中的元素为int类型。
【解题思路 &amp; Java实现】
栈stack1 用来模拟队列的push操作， 栈stack2 用来模拟队列的pop操作，如果 stack2为空，则将stack1中的所以数据移到stack2中，这样可以保证先进先出的顺序。

import j...]]></description><category></category></item><item><title><![CDATA[【链表】剑指Offer: 删除链表中重复的结点]]></title><link>https://blog.youkuaiyun.com/journey_TripleP/article/details/90230860</link><guid>https://blog.youkuaiyun.com/journey_TripleP/article/details/90230860</guid><author>journey_TripleP</author><pubDate>Wed, 15 May 2019 10:20:35 +0800</pubDate><description><![CDATA[【在线编程】 删除链表中重复的结点
【问题描述】
在一个排序的链表中，存在重复的结点，请删除该链表中重复的结点，重复的结点不保留，返回链表头指针。 例如，链表1-&gt;2-&gt;3-&gt;3-&gt;4-&gt;4-&gt;5 处理后为 1-&gt;2-&gt;5
【解题思路 &amp; Java实现】
首先看下这个题目：删除有序链表中重复的结点，重复的结点只保留一个。
思路：p指针是工作指...]]></description><category></category></item><item><title><![CDATA[【链表】剑指Offer: 链表中环的入口结点]]></title><link>https://blog.youkuaiyun.com/journey_TripleP/article/details/90200947</link><guid>https://blog.youkuaiyun.com/journey_TripleP/article/details/90200947</guid><author>journey_TripleP</author><pubDate>Tue, 14 May 2019 10:13:11 +0800</pubDate><description><![CDATA[【在线编程】链表中环的入口结点
【问题描述】
给一个链表，若其中包含环，请找出该链表的环的入口结点，否则，输出null。
【解题思路 &amp; Java实现】
首先思考一个问题：如何判断一个单向链表是否有环？
思路：使用快慢指针，fast每次走两步，slow每次走一个步，如果链表有环，slow 和 fast 必然在环内相遇。时间复杂度 O(n), 空间复杂度O(1).
/**
 * 判断一个单链...]]></description><category></category></item><item><title><![CDATA[【链表】剑指Offer: 两个链表的第一个公共结点]]></title><link>https://blog.youkuaiyun.com/journey_TripleP/article/details/90109949</link><guid>https://blog.youkuaiyun.com/journey_TripleP/article/details/90109949</guid><author>journey_TripleP</author><pubDate>Sat, 11 May 2019 15:13:35 +0800</pubDate><description><![CDATA[【在线编程】两个链表的第一个公共结点
【问题描述】
输入两个链表，找出它们的第一个公共结点。
【解题思路 &amp; Java实现】
方法一：如果两个链表存在公共结点，那么这两个链表一定呈 Y 形，公共结点后面的所有结点都是相同的。我们让长链表先走，知道走到与短链表的头部位置，然后两者并驾齐驱，直到遇到第一个公共结点。这个方法需要分别遍历两次链表。
/*
public class ListNode...]]></description><category></category></item><item><title><![CDATA[【链表】剑指Offer: 复杂链表的复制]]></title><link>https://blog.youkuaiyun.com/journey_TripleP/article/details/90108383</link><guid>https://blog.youkuaiyun.com/journey_TripleP/article/details/90108383</guid><author>journey_TripleP</author><pubDate>Sat, 11 May 2019 13:04:49 +0800</pubDate><description><![CDATA[【在线编程】复杂链表的复制
【问题描述】
输入一个复杂链表（每个节点中有节点值，以及两个指针，一个指向下一个节点，另一个特殊指针指向任意一个节点），返回结果为复制后复杂链表的head。（注意，输出结果中请不要返回参数中的节点引用，否则判题程序会直接返回空）
【解题思路 &amp; Java实现】
方法一：依次复制每个结点以及该结点的next结点和random结点。时间复杂度O(n)，空间复杂度O(...]]></description><category></category></item><item><title><![CDATA[【链表】剑指Offer: 合并两个排序的链表]]></title><link>https://blog.youkuaiyun.com/journey_TripleP/article/details/90025067</link><guid>https://blog.youkuaiyun.com/journey_TripleP/article/details/90025067</guid><author>journey_TripleP</author><pubDate>Thu, 09 May 2019 11:22:55 +0800</pubDate><description><![CDATA[【在线编程】合并两个排序的链表
【问题描述】
输入两个单调递增的链表，输出两个链表合成后的链表，当然我们需要合成后的链表满足单调不减规则。
【解题思路 &amp; Java实现】
方法一：借用一个空结点，利用尾插法新建合并后的链表。同时遍历两个链表，值小的先插入。
/*
public class ListNode {
    int val;
    ListNode next = null;

...]]></description><category></category></item><item><title><![CDATA[【链表】剑指Offer: 反转链表]]></title><link>https://blog.youkuaiyun.com/journey_TripleP/article/details/89971491</link><guid>https://blog.youkuaiyun.com/journey_TripleP/article/details/89971491</guid><author>journey_TripleP</author><pubDate>Wed, 08 May 2019 20:13:50 +0800</pubDate><description><![CDATA[【在线编程】反转链表
【问题描述】
输入一个链表，反转链表后，输出新链表的表头。
【解题思路 &amp; Java实现】
方法一： 前后指针法，原地逆转， 注意最终返回pre。
/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = v...]]></description><category></category></item><item><title><![CDATA[【链表】剑指Offer: 链表中倒数第k个结点]]></title><link>https://blog.youkuaiyun.com/journey_TripleP/article/details/89968190</link><guid>https://blog.youkuaiyun.com/journey_TripleP/article/details/89968190</guid><author>journey_TripleP</author><pubDate>Wed, 08 May 2019 18:55:35 +0800</pubDate><description><![CDATA[【在线编程】链表中倒数第k个结点
【问题描述】
输入一个链表，输出该链表中倒数第k个结点。
【解题思路 &amp; Java实现】
注意特殊情况：链表为空，k&gt;链表长度
方法一：倒数第k个就是顺数第n-k+1个，遍历两次列表。时间复杂度 O(n).
/*
public class ListNode {
    int val;
    ListNode next = null;

    L...]]></description><category></category></item><item><title><![CDATA[【链表】剑指Offer: 从尾到头打印链表]]></title><link>https://blog.youkuaiyun.com/journey_TripleP/article/details/89964446</link><guid>https://blog.youkuaiyun.com/journey_TripleP/article/details/89964446</guid><author>journey_TripleP</author><pubDate>Wed, 08 May 2019 17:54:45 +0800</pubDate><description><![CDATA[【在线编程】从尾到头打印链表
【问题描述】
输入一个链表，按链表值从尾到头的顺序返回一个ArrayList。
【解题思路 &amp; Java实现】
方法一：递归。
/**
*    public class ListNode {
*        int val;
*        ListNode next = null;
*
*        ListNode(int val) {
*   ...]]></description><category></category></item><item><title><![CDATA[Quartz框架入门知识总结]]></title><link>https://blog.youkuaiyun.com/journey_TripleP/article/details/89927536</link><guid>https://blog.youkuaiyun.com/journey_TripleP/article/details/89927536</guid><author>journey_TripleP</author><pubDate>Tue, 07 May 2019 19:15:18 +0800</pubDate><description><![CDATA[一. Quartz 的核心要素

一个job可以被多个trigger关联，但是一个trigger只能关联一个job。
1. 任务调度器 Scheduler
1.1 作用
Scheduler可以进行增加、删除及显示任务（Job）与触发器（Trigger），并且可以进行如开始、暂
停一个触发器等一系列与调度相关的工作。

1.2 创建
创建Scheduler需要通过StdSchedulerFactor...]]></description><category></category></item></channel></rss>