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

浙公网安备 33010602011771号