随笔分类 -  algorithm

数据结构与算法
摘要:问题描述: ​ 给定一个数组arr,和一个数num,请把小于num的数放在数组的左边,等于num的数放在数组的中间,大于num的数放在数组的右边。(要求额外空间复杂度O(1),时间复杂度O(N)) 思路: ​ 准备三个指针l、r、cur,l指向数组的第一个元素之前,代表小于num的区域,r指向数组最 阅读全文
posted @ 2020-07-01 00:43 雷歌儿 阅读(163) 评论(0) 推荐(0)
摘要:设计一个能够获取当前栈最小值的栈 问题描述 ​ 实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作,要求pop、push、getMin 操作的时间复杂度都是 O(1)。 解题思路 ​ 使用两个栈来实现这一功能,一个普通栈stackData,一个能获取最小值的栈stackMin 阅读全文
posted @ 2020-06-20 15:35 雷歌儿 阅读(294) 评论(0) 推荐(1)
摘要:二叉树序列化和反序列化 二叉树的序列化和反序列其实很简单。序列化可以暴力的理解为将一颗形象的树型结构压扁成链型结构,这个链型结构可以想象成一列火车,这列火车可以用队列表示,里面每节车厢存储了二叉树的各个节点值和辅助信息(方便反序列); 反序列就是将火车车厢里的东西倒出来,根据其进入车厢的顺序,将节点 阅读全文
posted @ 2020-06-16 16:57 雷歌儿 阅读(200) 评论(0) 推荐(0)
摘要:归并排序 归并的意思就是说将多个有序表(两个或以上)合并成一个新的有序表。 归并排序的思路 归并排序采用分治思想,其解决思路为: 将一个长度为n的数组通过二分的方式进行划分,直到划分为长度为1的有序子表; 然后两两合并,并对两个子序列进行排序; 合并两个已排好序的子序列得到最终排序结果。 实现原理如 阅读全文
posted @ 2020-06-16 01:51 雷歌儿 阅读(248) 评论(0) 推荐(0)