算法精选100题
文章平均质量分 90
算法精选100题
程光CS
Auf dem Wasser zu singen, Op.72, D.774 - Auf dem Wasser zu singen, Op.72, D.774
展开
-
二分查找的几类问题
二分查找的本质为维护[0, low)和(high, length-1]两个不同性质的区间作为循环不变量,通过循环检查剩余未定部分[low, high]的mid来拓展区间边界,当两个区间相遇时,则数组被划分为了两个不同性质的部分。>这种在循环过程中动态维护多个区间的边界的思想在数组相关算法题中比较常见,例如快排中的基于基准元素将数据划分为左右两部分,[颜色分类](https://leetcode.cn/problems/sort-colors)等原创 2023-07-21 20:07:11 · 236 阅读 · 0 评论 -
回溯算法的五类问题:组合、排列、子集、分割、棋盘
与组合不同的是,排列需要考虑顺序,在剪枝时不能进行顺序性剪枝,只能剪去已使用的元素。用一个boolean数组记录哪些元素已使用。### 1. 全排列**题目简述**:给定一个不含重复数字的数组nums ,返回其所有可能的全排列**思路**:回溯算法。在路径选择列表剪枝时,组合问题可进行顺序性剪枝,而排列问题只能剪去path已使用过的数据 * 用一个布尔数组标记每个数是否使用过,回溯时删除路径并将对应元素使用标记重置为false * 回溯递归函数参数:(结果集,已选择路径,数组nums和已原创 2023-04-06 20:54:14 · 555 阅读 · 0 评论 -
二叉树的前序、中序、后序、层序遍历
后序遍历:左右根,即对于每一棵子树,先遍历其左子树,然后遍历其右子树,最后遍历其根节点。* 2. pop访问元素后,若其为父节点的左孩子,则迭代父节点的右子树,若为右孩子,则直接pop访问其父节点,重复2。在一次循环中,先记录队列中的元素数,然后按数量将队列中所有元素出队,每出队一个元素,则将其孩子节点入队。前序遍历:根左右,即对于每一棵子树,先遍历其根节点,然后遍历其左子树,最后遍历其右子树。中序遍历:左根右,即对于每一棵子树,先遍历其左子树,然后遍历其根节点,最后遍历其右子树。原创 2023-04-04 20:16:41 · 515 阅读 · 0 评论 -
链表算法题的四类问题:基础、双指针、快慢指针、递归
初始前指针p1指向head,后指针p2指向head.next,然后一起移动,若p2指向的元素值与p1相同,则删除p2指向的元素,并将p2向后移动,将p1.next再指向p2。初始时前指针pre指向null,后指针cur指向head,然后进行遍历,遍历过程中反转pre节点和cur节点的指向,当cur指向null时,pre必已指向最后一个节点,返回。:链表的归并排序,先获取链表的中间节点,然后对左半链表进行归并排序,再对右半链表进行归并排序,最后合并这两个有序链表。返回删除后的链表的头节点。原创 2023-03-26 21:58:55 · 381 阅读 · 0 评论 -
十大经典排序算法综述
关于十大排序的文章也有不少了,但感觉大部分在各个排序算法的适用场景、如何实现外排等细节方面没怎么讲,故总结了这篇文章,欢迎浏览# 一、前言内部排序是指排序时将待排序数据全部加载到内存的算法。外部排序是指在处理海量数据排序时,无法将外部的数据(磁盘文件)一次全部加载进内存,可分批加载到内存进行排序,分次将结果写入到磁盘,最后在磁盘获得完整结果。如下归并、计数排序等排序算法就可以进行外部排序。比较排序是指排序时元素次序依赖于他们之间的比较。每个数都必须和其他数比原创 2022-09-24 19:10:29 · 660 阅读 · 0 评论