算法基础
文章平均质量分 66
koping_wu
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【leetcode】排序数组:快速排序、堆排序、归并排序
i+2)的值比当前位置的值大,则将当前位置与子节点位置的值交换,然后对子节点继续做heapify操作。2、从后先前遍历元素:先交换第一个位置(heapify操作后肯定是最大值)和最后一个位置的值,然后对第一个位置做heapify操作,操作完成后继续遍历。2、左半部分和右半部分有序后,新建一个相同长度的新数组,利用2个指针,依次将较小值赋值给新数组。1、找到开始下标和末尾下标的中点,将数组一分为2,继续递归进行排序。1、从后向前遍历元素,构建最大堆:当前位置(i)的左子节点(2。i+1)或者右子节点(2。原创 2025-12-25 16:27:28 · 307 阅读 · 0 评论 -
【leetcode】前 K 个高频元素
2、父节点位置:(i - 1) / 2、左子节点位置:2 * i + 1、右子节点位置:2 * i + 2。其中位置为0的节点就是堆顶节点。桶排序:将频率作为数组下标,对于出现频率不同的数字集合,存入对应的数组下标。堆大小不小于容量且满足条件,则替换位置0的节点,并将节点向堆下方调整。堆大小小于容量,数组中插入节点,并将节点向堆上方调整;利用优先级队列:PriorityQueue。1、通过数组保存堆数据。原创 2025-12-09 16:27:51 · 426 阅读 · 0 评论 -
编程题-算法-中等-leetcode-数组中的第K个最大元素
使用该方法,会存在超时,主要问题是只移动了一边的下标值,针对有很多重复值的情况的表现会很差。即可能出现i直接移动到了right-1的位置,这样partition的值就是right-1。方法二的快排就是左指针i和右指针j都同时向中间移动,这样得到的partition的下标就更靠近中间,所以比方法一的快排用时要显著降低:2427ms–>5ms。该题是高频题,并且某些公司会指定使用堆排序来做这道题,所以堆排序的方法也需要掌握。原创 2025-12-09 09:16:08 · 265 阅读 · 0 评论 -
编程题-算法-中等-leetcode-739. 每日温度
看到题目,可以想到用一个双向队列来记录对应的温度和下标值。然后遍历温度temperatures,当遍历的温度值(temp)比队首元素的温度(firstTempInQue)高,则可以得到队首元素的结果。方式二是不借助自定义的类Node,而是将队列里保存对应温度的下标值,通过下标来进行判断,当然原理其实和方式一基本一致。理解了方式一的话,方式二也就很好理解了。如果当前温度值(temp)比队首元素的温度(firstTempInQue)低,则将其放到队首。方式一比较好理解,自定义类Node和队列,进行解答。原创 2022-10-02 13:48:53 · 473 阅读 · 0 评论 -
编程题-算法-中等-牛客网-NC60 判断一个树是否是搜索二叉树和完全二叉树
编程题-算法-中等-牛客网-NC60 判断一个树是否是搜索二叉树和完全二叉树1、题目:判断一个树是否是搜索二叉树和完全二叉树2、编程解答2.1 方式一:搜索(递归+列表)、完全(非递归)2.2 方式二:搜索(递归)、完全(非递归)2.3 方式三:搜索(非递归)、完全(非递归)1、题目:判断一个树是否是搜索二叉树和完全二叉树2、编程解答1)什么是搜索二叉树?因为左子树的节点全部小于父节点,所以按照中序遍历的话,如果是搜索二叉树的话,一定是升序的。可以采用深度优先遍历,使用stack栈结构来解决。原创 2022-04-01 10:02:04 · 876 阅读 · 0 评论 -
编程题-算法-中等-牛客网-NC15 求二叉树的层序遍历
编程题-算法-中等-牛客网-NC15 求二叉树的层序遍历1、题目:NC15 求二叉树的层序遍历2、编程解答2.1 方法一:递归方法2.2 方法二:非递归方法——广度优先遍历法3、两种方法的自测代码1、题目:NC15 求二叉树的层序遍历2、编程解答2.1 方法一:递归方法第一种方法:递归方法,使用二叉树的前序遍历递归方式,再利用一个变量记录当前递归的深度,然后进行层序的遍历的记录。import java.util.*;/* * public class TreeNode { * i原创 2021-11-21 17:49:35 · 346 阅读 · 0 评论 -
编程题-算法-中等-牛客网-NC140 排序:快速排序详解(快排)
编程题-算法-中等-牛客网-NC140 排序:快速排序详解(快排)1、题目:NC140 排序2、编程解答3、快排详解4、快排复杂度、稳定性分析1、题目:NC140 排序2、编程解答排序的方式有很多种,我使用的是快速排序,代码如下:import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 将给定数组排序 * @param arr int整型原创 2021-11-15 20:26:41 · 1357 阅读 · 0 评论 -
排序算法1:归并排序的基本思想和应用示例
排序算法1:归并排序归并排序1:归并排序基本思想2:归并排序的应用:小和问题和逆序对问题2.1 小和问题和逆序对问题2.2 C++的代码示例2.3 python代码示例归并排序1:归并排序基本思想1:归并排序的过程:递归+合并 递归:每一次将数组分为左右2个子数组,然后再将左右2个子数组划分为2个子数组。base是当划分的子数组只有1个数字时,就直接返回。返回了两个base的结果之后,然...原创 2019-12-07 16:39:09 · 2791 阅读 · 0 评论
分享