
算法
段长风
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
树的前中后序 迭代写法——完全按照递归思维写。
最近在刷算法的时候刷到树的遍历的时候,有一道题引起了我的思考。 Leecode 144. 二叉树的前序遍历,同样还有两道道类似的题: Leecode 94. 二叉树的中序遍历 Leecode 145. 二叉树的后序遍历 题意很简单,这三道题都是要求使用迭代的方式写得到这三种遍历方式的结果。题目不难,最开始想的是通过迭代进行模拟树的拓扑结构,先根再左再右,为了回到右节点需要一个栈进行存储右节点。(leecode上解题很多,常规的解法肯定不值得我专门写一篇博客来纪录一下) 我在想,如何用迭代和栈的方式去模拟递原创 2020-09-10 22:08:57 · 360 阅读 · 2 评论 -
排序算法总结篇二——进阶排序,快速排序和归并排序
快速排序 快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法(敲黑板,这个很重要)也确实实用,因此很多软件公司的笔试面试都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。 所谓分治法,就是把一个数组分为两个或多个数组,然后分别进行排序,举个简单的例子,假设有一个数组 【2,1, 4,3】,我把它分为【...原创 2019-12-10 21:46:48 · 400 阅读 · 0 评论 -
排序算法总结篇一:基础版排序——选择,插入,冒泡
选择排序 选择排序是一个非常简单且直观的算法,顾名思义,就是每次遍历数组,将其最小或最大(以下举例都是从小到大排序)的以依次放入已排好序的数组,再重复此操作。 动画演示 动画过程解释 第一步遍历无序数组找到最小的数是2 将其与第一个数组交换(此时0-1即为已排序数组) 第二步再次遍历无序数组,找到最小数字是3 ,与第二个数字交换(此时0-2位已排序数组) 以此类推 最终得到一个0-n-1的排序...原创 2019-12-09 21:11:04 · 260 阅读 · 0 评论 -
剑指offer第二版-47.礼物的最大值(动态规划,广度优先遍历)C/C++版
问题描述 在一个 m*n 的棋盘中的每一个格都放一个礼物,每个礼物都有一定的价值(价值大于0).你可以从棋盘的左上角开始拿各种里的礼物,并每次向左或者向下移动一格,直到到达棋盘的右下角。给定一个棋盘及上面个的礼物,请计算你最多能拿走多少价值的礼物? 在这个棋盘中,按照(1,12,5,7,7,16,5)的顺序可以拿到总价值最大的礼物。 解题思路 1、动态规划思维 对于这种路径问题,一般第一考虑...原创 2019-12-08 22:33:56 · 423 阅读 · 0 评论