<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[orchid的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/doupudou6162</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; doupudou6162]]></copyright><item><title><![CDATA[面试高频算法题]]></title><link>https://blog.youkuaiyun.com/doupudou6162/article/details/108029393</link><guid>https://blog.youkuaiyun.com/doupudou6162/article/details/108029393</guid><author>doupudou6162</author><pubDate>Wed, 09 Sep 2020 13:36:15 +0800</pubDate><description><![CDATA[5.栈排序
思路：实现sort方法，完成最小值浮在栈顶
class SortedStack {

    private Stack&lt;Integer&gt; stack;
    public SortedStack() {
        stack = new Stack&lt;&gt;();
    }
    
    public void push(int val) {
        stack.push(val);
    }
    
    public void pop() {
]]></description><category></category></item><item><title><![CDATA[long和Long的区别]]></title><link>https://blog.youkuaiyun.com/doupudou6162/article/details/106791408</link><guid>https://blog.youkuaiyun.com/doupudou6162/article/details/106791408</guid><author>doupudou6162</author><pubDate>Tue, 16 Jun 2020 17:32:02 +0800</pubDate><description><![CDATA[转载自 https://blog.youkuaiyun.com/liushuijinger/article/details/30726433
最近项目中老是接触到包装类，在此基础上加了一些新的理解，系统记录一下
Java中数据类型分两种：
1.基本类型：long,int,byte,float,double
2.对象类型：Long,Integer,Byte,Float,Double其它一切java提供的，或者你自己创建的类。
其中Long叫 long的包装类。Integer、Byte和Float也类似，一般包装类的名字首]]></description><category></category></item><item><title><![CDATA[StringUtils类中isEmpty与isBlank的区别]]></title><link>https://blog.youkuaiyun.com/doupudou6162/article/details/106761054</link><guid>https://blog.youkuaiyun.com/doupudou6162/article/details/106761054</guid><author>doupudou6162</author><pubDate>Tue, 16 Jun 2020 16:58:28 +0800</pubDate><description><![CDATA[StringUtils.isEmpty(String str) 判断某字符串是否为空，为空的标准是 str==null 或 str.length()==0
StringUtils.isBlank(String str) 判断某字符串是否为空或长度为0或由空白符(whitespace) 构成

]]></description><category></category></item><item><title><![CDATA[postman中 form-data，x-www-form-urlencoded，raw, binary 区别详解]]></title><link>https://blog.youkuaiyun.com/doupudou6162/article/details/106712916</link><guid>https://blog.youkuaiyun.com/doupudou6162/article/details/106712916</guid><author>doupudou6162</author><pubDate>Fri, 12 Jun 2020 18:11:47 +0800</pubDate><description><![CDATA[一. form-data，x-www-form-urlencoded，raw, binary 区别
使用postman发送json格式数据时，body类型选raw,子类型选JSON，而不必自己设置header
1、form-data:
    就是http请求中的multipart/form-data,它**会将表单的数据处理为一条消息**，以标签为单元，用分隔符分开。由于有boundary隔离，所以multipart/form-data既**可以上传键值对，也可以上传文件**(正因为它采取键值对的方式，所]]></description><category></category></item><item><title><![CDATA[详解包含min函数的栈&&栈的压入，弹出序列（剑指offer java版）]]></title><link>https://blog.youkuaiyun.com/doupudou6162/article/details/106456273</link><guid>https://blog.youkuaiyun.com/doupudou6162/article/details/106456273</guid><author>doupudou6162</author><pubDate>Sun, 31 May 2020 15:44:27 +0800</pubDate><description><![CDATA[包含min函数的栈
题目描述
定义栈的数据结构，请在该类型中实现一个能够得到栈中所含最小元素的min函数（时间复杂度应为O（1））。
注意：保证测试中不会当栈为空的时候，对栈调用pop()或者min()或者top()方法。
思路
需要加入辅助栈

用一个栈stackData保存数据，用另外一个栈stackMin保存依次入栈最小的数
比如，stack中依次入栈，6, 4, 2, 8, 7,11,1
则min依次入栈，6, 4, 2, 2, 2, 2, 1
每次入栈的时候，如果入栈的元素比min中的栈顶元素小或]]></description><category></category></item><item><title><![CDATA[详解顺时针打印矩阵（剑指offer Java版）]]></title><link>https://blog.youkuaiyun.com/doupudou6162/article/details/106451881</link><guid>https://blog.youkuaiyun.com/doupudou6162/article/details/106451881</guid><author>doupudou6162</author><pubDate>Sun, 31 May 2020 10:18:24 +0800</pubDate><description><![CDATA[顺时针打印矩阵
题目描述
输入一个矩阵，按照从外向里以顺时针的顺序依次打印出每一个数字，例如，如果输入如下4 X 4矩阵： 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
思路
1.左上角的坐标和右下角的坐标固定了一圈矩阵，先打印这一圈矩阵。其中，对矩阵只有一行或者一列分别打印。
2.打印完了这一圈，左上角坐标都+1 ，右下角的都减一，到更内一圈。
比如：5*5的矩阵，(0,0)–(]]></description><category></category></item><item><title><![CDATA[面试笔试高频考点之反转链表（剑指offer java版 ）]]></title><link>https://blog.youkuaiyun.com/doupudou6162/article/details/106344651</link><guid>https://blog.youkuaiyun.com/doupudou6162/article/details/106344651</guid><author>doupudou6162</author><pubDate>Mon, 25 May 2020 23:08:38 +0800</pubDate><description><![CDATA[反转链表（面试笔试高频考点）
题目描述
输入一个链表，反转链表后，输出新链表的表头。
思路
定义两个指针，反向输出
/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode ReverseList(ListNode head) {
]]></description><category></category></item><item><title><![CDATA[解析链表中倒数第k个节点（剑指offer java版）]]></title><link>https://blog.youkuaiyun.com/doupudou6162/article/details/106344429</link><guid>https://blog.youkuaiyun.com/doupudou6162/article/details/106344429</guid><author>doupudou6162</author><pubDate>Mon, 25 May 2020 22:55:23 +0800</pubDate><description><![CDATA[链表中倒数第k个节点
题目描述
输入一个链表，输出该链表中倒数第k个结点。
思路
由题意知可使用栈来实现
/*
public class ListNode {
    int val;
    ListNode next = null;
    ListNode(int val) {
        this.val = val;
    }
}*/
import java.util.*;
public class Solution {
    public ListNode FindKthToTail(L]]></description><category></category></item><item><title><![CDATA[调整数组顺序使奇数位于偶数前面]]></title><link>https://blog.youkuaiyun.com/doupudou6162/article/details/106322662</link><guid>https://blog.youkuaiyun.com/doupudou6162/article/details/106322662</guid><author>doupudou6162</author><pubDate>Mon, 25 May 2020 22:28:14 +0800</pubDate><description><![CDATA[调整数组顺序使奇数位于偶数前面
题目描述
输入一个整数数组，实现一个函数来调整该数组中数字的顺序，使得所有的奇数位于数组的前半部分，所有的偶数位于数组的后半部分，并保证奇数和奇数，偶数和偶数之间的相对位置不变。

...]]></description><category></category></item><item><title><![CDATA[java8最全版stream特性map()，collect()，flatmap()等及示例分析]]></title><link>https://blog.youkuaiyun.com/doupudou6162/article/details/106327490</link><guid>https://blog.youkuaiyun.com/doupudou6162/article/details/106327490</guid><author>doupudou6162</author><pubDate>Mon, 25 May 2020 11:45:19 +0800</pubDate><description><![CDATA[为什么使用stream呢
优点：
1.无存储
stream它并不是一种数据结构，只是某种数据源的一个视图，这个数据源可以是一个数组，Java容器或I/O channel等。
2.函数式编程
对stream进行的任何修改都不会修改背后的数据源，比如对stream执行过滤操作（filter）并不会删除被过滤的元素，而是会产生一个不包含被过滤元素的新的流（新的stream）。
3.惰式执行原则
stream上的操作不会立即执行，只有等到使用者真正需要结果的时候才会执行。
4.可消费性
stream只能被“消费”一]]></description><category></category></item><item><title><![CDATA[数值的整数次方（剑指offer  java版）]]></title><link>https://blog.youkuaiyun.com/doupudou6162/article/details/106322173</link><guid>https://blog.youkuaiyun.com/doupudou6162/article/details/106322173</guid><author>doupudou6162</author><pubDate>Sun, 24 May 2020 22:29:51 +0800</pubDate><description><![CDATA[数值的整数次方
题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
思路
不能用==比较两个浮点数是否相等，因为有误差。考虑输入值的多种情况。
注意有几个情况要单独列出来考虑：
1.base为0
2.指数为0
3.指数为正数或者为负数的情况
public class Solution {
    public double Power(double base, int exponent) {
  ]]></description><category></category></item><item><title><![CDATA[位运算专题（剑指offer java版）]]></title><link>https://blog.youkuaiyun.com/doupudou6162/article/details/106311864</link><guid>https://blog.youkuaiyun.com/doupudou6162/article/details/106311864</guid><author>doupudou6162</author><pubDate>Sun, 24 May 2020 11:36:49 +0800</pubDate><description><![CDATA[位运算知识点
位运算（5种）：与、或、异或、左移和右移。
与运算：全真为真；
或运算：全假为假；
异或运算：相同为假。
注意右移运算要考虑是否有符号值。
左移：m&lt;&lt;n，表示把m左移n位。左移n位的时候，最左边的n位将被丢弃，同时在最右边补上n个0。
右移：m&gt;&gt;n，表示把m右移n位。右移n位的时候，最右边的n位将被丢弃。注：如果数字是一个无符号值，则用0填补最左边的n位。如果数字是一个有符号数值，则用数字的符号位填补最左边的n位。（符号位为0填补0，符号位为1填补1）。
计算一个数]]></description><category></category></item><item><title><![CDATA[（递归专题）斐波那契数列&&跳台阶&&变态跳台阶（剑指offer java版）]]></title><link>https://blog.youkuaiyun.com/doupudou6162/article/details/106304102</link><guid>https://blog.youkuaiyun.com/doupudou6162/article/details/106304102</guid><author>doupudou6162</author><pubDate>Sat, 23 May 2020 18:22:52 +0800</pubDate><description><![CDATA[斐波那契数列
题目描述
大家都知道斐波那契数列，现在要求输入一个整数n，请你输出斐波那契数列的第n项（从0开始，第0项为0，第1项是1）。
n&lt;=39
思路
方法一：递归（不太好）递归简洁，但是效率不高。循环O（N）
public class Solution {
    public int Fibonacci(int n) {
        if(n == 0) return 0;
        if(n == 1) return 1;
        //if(n==2) return 1;]]></description><category></category></item><item><title><![CDATA[详解旋转数组的最小数字（剑指offer java版）]]></title><link>https://blog.youkuaiyun.com/doupudou6162/article/details/106302883</link><guid>https://blog.youkuaiyun.com/doupudou6162/article/details/106302883</guid><author>doupudou6162</author><pubDate>Sat, 23 May 2020 18:09:13 +0800</pubDate><description><![CDATA[旋转数组的最小数字
题目描述
把一个数组最开始的若干个元素搬到数组的末尾，我们称之为数组的旋转。
输入一个非递减排序的数组的一个旋转，输出旋转数组的最小元素。
例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转，该数组的最小值为1。
NOTE：给出的所有元素都大于0，若数组大小为0，请返回0。
思路
方法一：遍历数组，记录遍历过的最小值min
import java.util.ArrayList;
public class Solution {
    public int minNumber]]></description><category></category></item><item><title><![CDATA[用两个栈实现队列（剑指offer java版）]]></title><link>https://blog.youkuaiyun.com/doupudou6162/article/details/106302832</link><guid>https://blog.youkuaiyun.com/doupudou6162/article/details/106302832</guid><author>doupudou6162</author><pubDate>Sat, 23 May 2020 17:04:09 +0800</pubDate><description><![CDATA[用两个栈实现队列
题目描述
用两个栈来实现一个队列，完成队列的Push和Pop操作。 队列中的元素为int类型。
思路
入栈给stack1，出栈时，若stack2不为空，则出栈，若为空，把stack1的内容全都放入stack2，然后再出栈
import java.util.Stack;
public class Solution {
    Stack&lt;Integer&gt; stack1 = new Stack&lt;Integer&gt;();
    Stack&lt;Integer&gt; s]]></description><category></category></item><item><title><![CDATA[详细解析重建二叉树（剑指offer  java版）]]></title><link>https://blog.youkuaiyun.com/doupudou6162/article/details/106297794</link><guid>https://blog.youkuaiyun.com/doupudou6162/article/details/106297794</guid><author>doupudou6162</author><pubDate>Sat, 23 May 2020 12:43:00 +0800</pubDate><description><![CDATA[重建二叉树
题目描述
输入某二叉树的前序遍历和中序遍历的结果，请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}，则重建二叉树并返回。
思路
注意对数组一定要先进行null判断（否则会报空指针异常的错误），在进行长度是否为0判断
本题先判断两个数组是否为null，在判断数组长度是否为0，之后再判断两个数组的长度是否一致。
注意前序遍历的第一个数字是根节点，但在中序遍历中，根节点的值位于]]></description><category></category></item><item><title><![CDATA[从尾到头打印链表（剑指offer java版）]]></title><link>https://blog.youkuaiyun.com/doupudou6162/article/details/106245326</link><guid>https://blog.youkuaiyun.com/doupudou6162/article/details/106245326</guid><author>doupudou6162</author><pubDate>Wed, 20 May 2020 22:19:15 +0800</pubDate><description><![CDATA[从尾到头打印链表
题目描述
思路
由题意，很容易想到使用栈来实现倒序输出。
public ArrayList&lt;Integer&gt; printListFromTailToHead(ListNode listNode) {
    Stack&lt;Integer&gt; stack = new Stack&lt;&gt;();
    ArrayList&lt;Integer&gt; list = new ArrayList&lt;&gt;();
    while(listNode != null]]></description><category></category></item><item><title><![CDATA[优解替换空格（剑指offer Java版）]]></title><link>https://blog.youkuaiyun.com/doupudou6162/article/details/106245161</link><guid>https://blog.youkuaiyun.com/doupudou6162/article/details/106245161</guid><author>doupudou6162</author><pubDate>Wed, 20 May 2020 21:47:29 +0800</pubDate><description><![CDATA[替换空格
题目描述
请实现一个函数，将一个字符串中的每个空格替换成“%20”。例如，当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路
最好不要用split来做，容易出现各种问题，各种考虑不周全，推荐使用toCharArray()方法做
public class Solution {
    public String replaceSpace(StringBuffer str) {
    	String s1 = str.toString();
    ]]></description><category></category></item><item><title><![CDATA[字符流中第一个不重复的字符（剑指offer  java版）]]></title><link>https://blog.youkuaiyun.com/doupudou6162/article/details/106177600</link><guid>https://blog.youkuaiyun.com/doupudou6162/article/details/106177600</guid><author>doupudou6162</author><pubDate>Sun, 17 May 2020 22:11:14 +0800</pubDate><description><![CDATA[字符流中第一个不重复的字符
题目描述
请实现一个函数用来找出字符流中第一个只出现一次的字符。例如，当从字符流中只读出前两个字符"go"时，第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时，第一个只出现一次的字符是"l"。
输出描述:
如果当前字符流没有存在出现一次的字符，返回#字符。
思路
用hashmap+ArrayList实现
import java.util.HashMap;
import java.util.ArrayList;
public class Solutio]]></description><category></category></item><item><title><![CDATA[表示数值的字符串（剑指offer  java版）]]></title><link>https://blog.youkuaiyun.com/doupudou6162/article/details/106177213</link><guid>https://blog.youkuaiyun.com/doupudou6162/article/details/106177213</guid><author>doupudou6162</author><pubDate>Sun, 17 May 2020 17:26:26 +0800</pubDate><description><![CDATA[表示数值的字符串
题目描述
请实现一个函数用来判断字符串是否表示数值（包括整数和小数）。例如，字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。
思路
方法一：正则表达式
[±]? 表示+或者-出现0次或1次。[0-9]{0,}表示0到9出现0次或者更多次。()表示这个分组作为一个整体。 \.?表示.出现0次或1次。[0-9]{1,}表示0到9出现1次或者多次。()表示一个分组。]]></description><category></category></item></channel></rss>