<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[iNiegang的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/iNiegang</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; iNiegang]]></copyright><item><title><![CDATA[Java 递归和非递归实现二叉树的前序、中序、后序遍历]]></title><link>https://blog.youkuaiyun.com/iNiegang/article/details/115841624</link><guid>https://blog.youkuaiyun.com/iNiegang/article/details/115841624</guid><author>iNiegang</author><pubDate>Sun, 18 Apr 2021 22:42:37 +0800</pubDate><description><![CDATA[二叉树的遍历是非常重要的基础算法，今天闲来无事，对二叉树的前序、中序、后序遍历使用递归和非递归进行了一个实现。


构造一个有9个节点的二叉树，如下



具体代码实现如下


public class BinaryTree {

    private static class Tree {
        private Integer value;

        private Tree leftNode;

        private Tree rightNode;
    }

   ..]]></description><category></category></item><item><title><![CDATA[【练题记录】leetcode 289. 生命游戏]]></title><link>https://blog.youkuaiyun.com/iNiegang/article/details/105334431</link><guid>https://blog.youkuaiyun.com/iNiegang/article/details/105334431</guid><author>iNiegang</author><pubDate>Sun, 05 Apr 2020 21:57:05 +0800</pubDate><description><![CDATA[问题描述

给定一个包含 m × n 个格子的面板，每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态：1 即为活细胞（live），或 0 即为死细胞（dead）。每个细胞与其八个相邻位置（水平，垂直，对角线）的细胞都遵循以下四条生存定律：

如果活细胞周围八个位置的活细胞数少于两个，则该位置活细胞死亡；
如果活细胞周围八个位置有两个或三个活细胞，则该位置活细胞仍然存活；
如果活细胞周围...]]></description><category></category></item><item><title><![CDATA[【练题记录】leetcode 4. 寻找两个有序数组的中位数]]></title><link>https://blog.youkuaiyun.com/iNiegang/article/details/104147353</link><guid>https://blog.youkuaiyun.com/iNiegang/article/details/104147353</guid><author>iNiegang</author><pubDate>Sun, 02 Feb 2020 18:12:27 +0800</pubDate><description><![CDATA[问题描述
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。
请你找出这两个有序数组的中位数，并且要求算法的时间复杂度为 O(log(m + n))。
你可以假设 nums1 和 nums2 不会同时为空。
示例 1:
nums1 = [1, 3]
nums2 = [2]
则中位数是 2.0
示例 2:
nums1 = [1, 2]
nums2 = [3, 4]
则中位数是 (2...]]></description><category></category></item><item><title><![CDATA[【练题记录】Java实现快速排序]]></title><link>https://blog.youkuaiyun.com/iNiegang/article/details/104126349</link><guid>https://blog.youkuaiyun.com/iNiegang/article/details/104126349</guid><author>iNiegang</author><pubDate>Fri, 31 Jan 2020 18:03:57 +0800</pubDate><description><![CDATA[在十大经典排序算法中，快排的应用场景非常多，因此掌握快排的思想和实现是非常重要的。本文以将一个数组从小到大排序为例来讲解快排


十大经典排序算法比较

快排的基本流程

1、选择一个中轴pivot
2、将比pivot大的元素放到其右边
3、将比pivot小的元素放到其左边
4、分别对左右列表元素按照前三步进行递归
5、递归的终止条件为元素列表的左下标≥右下标

代码实现
public cla...]]></description><category></category></item><item><title><![CDATA[【练题记录】leetcode 1091 二进制矩阵中的最短路径]]></title><link>https://blog.youkuaiyun.com/iNiegang/article/details/104119939</link><guid>https://blog.youkuaiyun.com/iNiegang/article/details/104119939</guid><author>iNiegang</author><pubDate>Thu, 30 Jan 2020 22:55:14 +0800</pubDate><description><![CDATA[问题描述
在一个 N × N 的方形网格中，每个单元格有两种状态：空（0）或者阻塞（1）。
一条从左上角到右下角、长度为 k 的畅通路径，由满足下述条件的单元格 C_1, C_2, …, C_k 组成：
相邻单元格 C_i 和 C_{i+1} 在八个方向之一上连通（此时，C_i 和 C_{i+1} 不同且共享边或角）
C_1 位于 (0, 0)（即，值为 grid[0][0]）
C_k 位于 (N...]]></description><category></category></item><item><title><![CDATA[非递归实现广度优先遍历（BFS）]]></title><link>https://blog.youkuaiyun.com/iNiegang/article/details/104117006</link><guid>https://blog.youkuaiyun.com/iNiegang/article/details/104117006</guid><author>iNiegang</author><pubDate>Thu, 30 Jan 2020 17:44:29 +0800</pubDate><description><![CDATA[对于广度优先遍历，使用递归方式实现非常普遍，这里我们讨论一下如何使用非递归来实现


算法

1、以图的邻接矩阵为例
2、使用一个queue来保存访问顺序，每次取队首元素，如果其有邻接点，则将其所有邻接点入队，并设置visit数组为1，最后再将其出队
3、循环结束条件为：队列为空

代码实现
以下图为例

public class BfsIterateAdjacentMatrix {
    ...]]></description><category></category></item><item><title><![CDATA[非递归实现深度优先遍历（DFS）]]></title><link>https://blog.youkuaiyun.com/iNiegang/article/details/104114063</link><guid>https://blog.youkuaiyun.com/iNiegang/article/details/104114063</guid><author>iNiegang</author><pubDate>Thu, 30 Jan 2020 12:52:01 +0800</pubDate><description><![CDATA[对于深度优先遍历，使用递归实现是非常普遍的，但是递归算法往往比较难以理解，如果递归终止条件设置不好的话，容易出现死循环。我们来看看通过非递归方式如何实现深度优先遍历


算法

1、以图的邻接矩阵为例
2、使用一个stack来保存要访问的节点，每次都获取栈顶元素，然后遍历其对应的邻接点，如果遇到一个没有访问过的邻接点，则终止对其他邻接点的遍历，将该邻接点入栈，并进行下一轮循环，直到该元素的邻接...]]></description><category></category></item><item><title><![CDATA[Leetcode 885螺旋矩阵Ⅲ]]></title><link>https://blog.youkuaiyun.com/iNiegang/article/details/104105443</link><guid>https://blog.youkuaiyun.com/iNiegang/article/details/104105443</guid><author>iNiegang</author><pubDate>Wed, 29 Jan 2020 11:49:44 +0800</pubDate><description><![CDATA[问题描述
在 R 行 C 列的矩阵上，我们从 (r0, c0) 面朝东面开始
这里，网格的西北角位于第一行第一列，网格的东南角位于最后一行最后一列。
现在，我们以顺时针按螺旋状行走，访问此网格中的每个位置。
每当我们移动到网格的边界之外时，我们会继续在网格之外行走（但稍后可能会返回到网格边界）。
最终，我们到过网格的所有 R * C 个空间。
按照访问顺序返回表示网格位置的坐标列表。
示例 1：
...]]></description><category></category></item><item><title><![CDATA[LeetCode 1314 矩阵区域和]]></title><link>https://blog.youkuaiyun.com/iNiegang/article/details/104101743</link><guid>https://blog.youkuaiyun.com/iNiegang/article/details/104101743</guid><author>iNiegang</author><pubDate>Tue, 28 Jan 2020 19:10:52 +0800</pubDate><description><![CDATA[问题描述
给你一个 m * n 的矩阵 mat 和一个整数 K ，请你返回一个矩阵 answer ，其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和：
i - K &lt;= r &lt;= i + K, j - K &lt;= c &lt;= j + K
(r, c) 在矩阵内。
示例 1：
输入：mat = [[1,2,3],[4,5,6],[7,8,9]...]]></description><category></category></item><item><title><![CDATA[leetcode 542 01矩阵问题]]></title><link>https://blog.youkuaiyun.com/iNiegang/article/details/104100500</link><guid>https://blog.youkuaiyun.com/iNiegang/article/details/104100500</guid><author>iNiegang</author><pubDate>Tue, 28 Jan 2020 16:34:21 +0800</pubDate><description><![CDATA[问题描述
给定一个由 0 和 1 组成的矩阵，找出每个元素到最近的 0 的距离。
两个相邻元素间的距离为 1 。
示例 1:
输入:
0 0 0
0 1 0
0 0 0
输出:
0 0 0
0 1 0
0 0 0
示例 2:
输入:
0 0 0
0 1 0
1 1 1
输出:
0 0 0
0 1 0
1 2 1
注意:
给定矩阵的元素个数不超过 10000。
给定矩阵中至少有一个元素是 0。
矩阵...]]></description><category></category></item><item><title><![CDATA[leetcode 51 N queens问题解法]]></title><link>https://blog.youkuaiyun.com/iNiegang/article/details/103949879</link><guid>https://blog.youkuaiyun.com/iNiegang/article/details/103949879</guid><author>iNiegang</author><pubDate>Sun, 12 Jan 2020 21:28:09 +0800</pubDate><description><![CDATA[问题描述

n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上，并且使皇后彼此之间不能相互攻击。

解题思路

使用DFS和回溯法
按行进行搜索，得到一个正确解或者无法得到正确解，则往上回溯寻找求他解

实现思路和代码如下
class Solution {
public ArrayList&lt;List&lt;String&gt;&gt; solveNQueens(int n) {
...]]></description><category></category></item><item><title><![CDATA[Longest Common Prefix 解题记]]></title><link>https://blog.youkuaiyun.com/iNiegang/article/details/74904148</link><guid>https://blog.youkuaiyun.com/iNiegang/article/details/74904148</guid><author>iNiegang</author><pubDate>Sun, 09 Jul 2017 19:16:04 +0800</pubDate><description><![CDATA[在LeetCode上看到了一道标记为easy的题目，题目如下
  Write a function to find the longest common prefix string amongst an array of strings.
  
题目分析题目描述非常简单，就是要求找出字符串数组的最大公共前缀。
  
  1、做OJ的条件反射应该是首先考虑异常输入情况，即字符串数组为null或者长度为]]></description><category></category></item><item><title><![CDATA[关于JAVA 8 是否需要StringBuilder来拼接字符串的思考]]></title><link>https://blog.youkuaiyun.com/iNiegang/article/details/72803731</link><guid>https://blog.youkuaiyun.com/iNiegang/article/details/72803731</guid><author>iNiegang</author><pubDate>Mon, 29 May 2017 20:12:58 +0800</pubDate><description><![CDATA[关于JAVA 8 是否需要StringBuilder来拼接字符串的思考
最近看到一片文章说JAVA 8已经不需要使用StringBuilder来拼接字符串了，使用+的效率也会非常高，文章链接 http://www.codeceo.com/article/why-java8-not-use-stringbuilder.html 本篇博文就对该文章的说法进行一个讨论]]></description><category></category></item><item><title><![CDATA[Eclipse查看某个类的方法时出现“Source not found”的解决办法]]></title><link>https://blog.youkuaiyun.com/iNiegang/article/details/52905020</link><guid>https://blog.youkuaiyun.com/iNiegang/article/details/52905020</guid><author>iNiegang</author><pubDate>Sun, 23 Oct 2016 22:03:42 +0800</pubDate><description><![CDATA[问题描述
  
  Eclipse查看某个类的方法时出现“Source not found 
  you can attach the source by clicking Attach Source below” 
  如下图所示： 
  
  
问题分析
  这种问题是由于对应的类的源文件没有加载
解决方法
  点击“Attach Source”，选择对应的源码的压缩文件，要是zip格式的，加载]]></description><category></category></item><item><title><![CDATA[逆波兰表达式 java]]></title><link>https://blog.youkuaiyun.com/iNiegang/article/details/51425986</link><guid>https://blog.youkuaiyun.com/iNiegang/article/details/51425986</guid><author>iNiegang</author><pubDate>Mon, 16 May 2016 16:17:33 +0800</pubDate><description><![CDATA[今天有点时间来写一下使用java实现中缀表达式转换为逆波兰表达式，逆波兰表达式其实就是后缀表达式，废话不多说，先看中缀表达式转换为逆波兰表达式的算法。]]></description><category></category></item><item><title><![CDATA[Java实现双向链表]]></title><link>https://blog.youkuaiyun.com/iNiegang/article/details/48934647</link><guid>https://blog.youkuaiyun.com/iNiegang/article/details/48934647</guid><author>iNiegang</author><pubDate>Tue, 06 Oct 2015 20:35:21 +0800</pubDate><description><![CDATA[上一篇文章http://blog.youkuaiyun.com/iniegang/article/details/48932261已经对循环单链表进行了具体实现，对于双向链表，实现起来也非常类似，但是需要注意的是每个节点（除了头尾）都要分别指向它的前驱节点和后继节点。]]></description><category></category></item><item><title><![CDATA[Java实现循环单链表……]]></title><link>https://blog.youkuaiyun.com/iNiegang/article/details/48932261</link><guid>https://blog.youkuaiyun.com/iNiegang/article/details/48932261</guid><author>iNiegang</author><pubDate>Tue, 06 Oct 2015 16:31:09 +0800</pubDate><description><![CDATA[相比于C和C++，Java中没有了“结构”，因此就要使用类来描述“结构”，同样的，在实现链表时，就可以使用类来定义节点，然后进行相应的操作，以下是我实现循环单链表的代码，循环单链表和单链表的区别在于最后一个节点的判断，整体不难……]]></description><category></category></item><item><title><![CDATA[开放3306端口，远程连接MySQL]]></title><link>https://blog.youkuaiyun.com/iNiegang/article/details/48832075</link><guid>https://blog.youkuaiyun.com/iNiegang/article/details/48832075</guid><author>iNiegang</author><pubDate>Wed, 30 Sep 2015 20:19:36 +0800</pubDate><description><![CDATA[使用Navicat远程连接阿里云服务器的MySQL数据库，一直提示错误：
  2003- Can’t connect MySQL Server on ’       ‘(10038)]]></description><category></category></item><item><title><![CDATA[Java中子类继承父类方法应该注意的问题]]></title><link>https://blog.youkuaiyun.com/iNiegang/article/details/48811561</link><guid>https://blog.youkuaiyun.com/iNiegang/article/details/48811561</guid><author>iNiegang</author><pubDate>Tue, 29 Sep 2015 21:17:44 +0800</pubDate><description><![CDATA[Java中子类继承父类方法应该注意的问题]]></description><category></category></item><item><title><![CDATA[查找组成一个偶数最接近的两个素数 Java实现]]></title><link>https://blog.youkuaiyun.com/iNiegang/article/details/48274619</link><guid>https://blog.youkuaiyun.com/iNiegang/article/details/48274619</guid><author>iNiegang</author><pubDate>Mon, 07 Sep 2015 22:11:43 +0800</pubDate><description><![CDATA[华为OJ 查找组成一个偶数最接近的两个素数]]></description><category></category></item></channel></rss>