- 博客(6)
- 收藏
- 关注
原创 堆排序的两个点
思路:先将arr进行堆排序(大顶堆),然后将最顶的数据与树的最后一个(在arr中也就是最后一个值)进行交换;然后继续对arr-1的数组进行堆排序,并继续进行交换 需要注意的三个点 arr.length/2 -1为什么可以表示最后最小的子树。因为子节点的父节点是(n-1)/2 交换前需要对数组进行一个从最低端的树往上一次排序,这一步后,树有了整体的大小阶层,以后当顶部与最后一个值交换后,就不用从低往上排列整颗树了,只需从上往下对比子节点即可
2023-03-14 15:35:15 40
原创 递归的使用
底层使用栈实现的 递归必须向退出递归条件逼近,必须要有退出条件 递归实现八皇后问题 这里有一个小技巧,对于只需要一个返回值,而且很复杂的操作,统一封装成一个接口 三个关键点 使用以为数组来表示,下标表示第几个皇后,数值表示皇后的具体位置 将判断皇后是否冲突封装成一个方法 对于是否在一条线上的判断使用abs(j-i)==abs(array[j]-array[i]) 递归实现迷宫问题 关键点是规则的定义,0表示没有走过,1表示墙,2表示走的通,3表示走过了走不通
2023-03-12 14:48:44 34
原创 稀疏数组的转换
核心思想:将稀疏数组中的非零数拿出来单独存放到一个较小的数组中,这样能够节省空间 关键点: 遍历稀疏数组,得到非零数的个数num 创建一个较小数组,数组大小为[num+1][3] +1 是因为数组要保存稀疏数组的大小和非零的个数
2023-03-12 09:11:30 40
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人