![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 89
litexy
在读小硕一枚
主要兴趣:后端,大数据
技术栈:Java
展开
-
快速排序实现及其pivot的选取
coursera上斯坦福的算法专项在讲到快速排序时,称其为最优雅的算法之一。快速排序确实是一种比较有效的排序算法,很多类库中也都采用了这种排序算法,其最坏时间复杂度为O(n2)O(n^2)O(n2),平均时间复杂度为O(nlogn)O(nlogn)O(nlogn),且其不需要额外的存储空间。基本步骤快速排序主要使用了分治的思想,通过选取一个pivot,将一个数组划分为两个子数组。其步骤为:1....原创 2018-10-05 17:23:24 · 4875 阅读 · 0 评论 -
关于链表中哨兵结点问题的深入剖析
最近正在学习UC Berkeley的CS61B这门课,主要是采用Java语言去实现一些数据结构以及运用数据结构去做一些project。这门课不仅告诉你这个东西怎么做,而且一步一步探寻为什么要这样做以及为什么会有这些功能。我们有时在接触某段代码或功能的实现时,可能直接就看到了它最终的面貌,而不知道如何一步步演化而来,其实每一个功能的添加或优化都是对应一个问题的解决。下面就这门课中关于链表中哨兵结点的...原创 2018-10-07 10:50:17 · 2220 阅读 · 0 评论 -
关于LeetCode上链表题目的一些trick
最近在刷leetcode上关于链表的一些高频题,在写代码的过程中总结了链表的一些解题技巧和常见题型。结点的删除指定链表中的某个结点,将其从链表中删除。由于在链表中删除某个结点需要找到该结点的前一个位置,然后将前一个结点的next指针直接绕过该结点即可删除。但找到该结点的前一个位置需要指针遍历,其实还有一种更简单的trick,就是将要删除的结点的值设为该结点的后一个的值,然后删除该结点的后一...原创 2018-10-07 10:58:36 · 192 阅读 · 0 评论 -
二叉树非递归遍历的通用解法
最近在跟慕课网上《玩转算法面试》这门课,老师讲的很不错,其中有一节提到了用栈来模拟二叉树的前序,中序,后序遍历。二叉树的遍历的递归解法很简单,但有时面试或做题时往往会要求写出非递归的形式,一般教科书上实现的前序,中序和后序遍历的非递归形式差别都比较大,特别是后序遍历,很难理解。那有没有一种通用的迭代解法能适于这三种遍历呢?下面介绍一下这种通用解法。基本思想先给出前序遍历的递归形式代码如下:...原创 2019-03-14 19:41:44 · 1008 阅读 · 0 评论 -
递归中更新值的几种方式
在做递归相关的题目时,经常需要在递归的过程中对返回结果进行更新或维护某个值作为判断条件,主要可以通过将该值作为成员变量、作为参数传递、在返回值中更新等三种方式,采用的方式不同,最终的递归程序就会不同。下面以LeetCode的404-Sum of Left Leaves为例讲解三种方式如何实现。题目大意主要是说让我们求一颗二叉树的所有左叶子值之和。Example: 3 / \ ...原创 2019-05-16 11:11:10 · 1579 阅读 · 0 评论 -
二分搜索树中删除结点(Java实现)
二分搜索树的定义为:(1)所有左子树中的结点小于等于根节点(2)所有右子树中的结点大于等于根节点(3)其任意子树也满足(1), (2)(注意是所有结点)二分搜索树删除结点主要可以分为以下三种情况:(1)被删除的结点为叶子结点:直接将其置为空即可;(2)被删除的结点只有左孩子或右孩子,用其左孩子或右孩子替代即可;(3)被删除的结点左右孩子都不为空:可以采取两种做法:a. 寻找其左...原创 2019-05-17 16:20:46 · 581 阅读 · 0 评论 -
剑指offer--用两个栈实现队列
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。解法import java.util.Stack;public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new ...原创 2019-06-28 15:27:45 · 126 阅读 · 0 评论 -
剑指offer--旋转数组的最小数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。解法分析import java.util.ArrayList;public class Solution {...原创 2019-06-28 15:28:38 · 180 阅读 · 0 评论