数据结构
大秦隐士
这个作者很懒,什么都没留下…
展开
-
实现最大堆和堆排序
最大堆:最大堆:堆中某个节点的值总是不大于其父节点的值,可以使用数组实现:按层,从上到下,从左到有,为节点序号i 往堆中增加元素的操作:往数组末尾增加,如果比父节点大,则交换,同理,一直到根节点;该操作称为siftUp 去除最大堆根元素的操作:将根元素去除,将最后一个元素放在根元素的位置,比较根元素左右子节点,如果左右子节点最大值大于根元素,则和最大的子节点交换 所以依次取出最大堆的根元素,对应的就是降序排列 完整代码如下: /** * 最大堆:堆中某个节点的值总是不大于其父节点的值 *..原创 2020-05-30 11:12:18 · 273 阅读 · 0 评论 -
LeetCode:293.移动0
题目描述: 双指针解法:使用两个变量i,j表示数组元素的下标,j指向值为0的位置,i进行移动,如果i的值不为0,就要与j指向的值进行交互,j向后移动 class Solution { public void moveZeroes(int[] nums) { int j = 0; for(int i=0; i<nums.length; i++) { if(nums[i]!=0) { int tmp = nums[j]; nums[j] = nu原创 2020-05-13 09:54:32 · 84 阅读 · 0 评论