数据结构/算法
文章平均质量分 95
Lawfree
这个作者很懒,什么都没留下…
展开
-
[算法系列]位运算技巧+Leetcode习题
[算法系列]位运算技巧+Leetcode习题知识点:判断2的幂取反+1 & 原数 为原数即可x & (-x) == x 如何统计一个整数里面有多少个1?for(int j = i ; j > 0 ; j >>= 1) s += j & 1;两个相同的数异或为0异或的一些规律a ^ b ^ b = aa ^ b ^ a = ba ^ a = 0 //这条可以用来找出只出现了一次的数0 ^ a = a异或满足交换律原创 2021-03-03 22:34:00 · 668 阅读 · 1 评论 -
[算法系列]吃透二分查找:经典题目+解题思路+模板
0.最原始的二分查找本文勉强算是递归系列的第八篇文章吧。不过实际上本文是二分专题。以多道LC上题介绍二分的解题思路与模板。沿着递归的思路,今天我们来谈谈二分查找严格来说,二分查找和递归联系不算太紧密,本文介绍的主要是非递归版本的二分查找类型习题的解析,话不多说,先来看看原始的BinarySearch吧!给定一个没有重复元素的有序数组arr,查找目标值target的下标,若arr中没有则返回-1由于是递归系列,那我们从递归版的二分开始:(ps:本文代码中中部分边界判空条件省略) /*原创 2020-10-18 00:17:38 · 636 阅读 · 0 评论 -
[算法系列]递归应用——二叉树(2):一种带信息递归返回的求解方式
[算法系列]递归应用——二叉树(2):一种带信息递归返回的求解方式本文是递归系列文的第七篇,和上篇文章类似,介绍BinaryTree的解题思路。这里介绍一种和“遍历”行为类似的,自下而上递归返回信息的解题思路。其规则的写法、并不复杂的思路,可解决大多bintree中与子树有关的问题(但愿吧哈哈哈)0.引子:求二叉树节点中的最大值和最小值此题当然可以通过遍历整棵二叉树,将遍历途中遇到的最大值和最小值进行保存。遍历完成后maxVal和minVla即为所求:class MaxAndMinInBinTree原创 2020-09-29 07:09:11 · 1586 阅读 · 0 评论 -
[算法系列]递归应用——二叉树(1):二叉树遍历详解解+LeetCode经典题目+模板总结
本文是递归算法系列文的第7篇,依然沿着递归的脉络,介绍了常常运用递归处理问题的一个典型数据结构——二叉树。分析总结了LeetCode中的相关习题在解法上的思路和模板。本文内容如下:树的前、中、后序、层次遍历的递归和非递归写法LeetCode上树的问题分类(基本遍历、路径、计数、加和、深宽、构造、BST等)两种遍历为思想的问题(判定、比较结点或子树 以及 路径[ 和 ]、累计)【小结】在解决树的遍历相关问题时,我们是如何使用基本遍历方法,进行递归设计的?由于树的相关问题题目较多,本文介绍第原创 2020-07-04 14:43:38 · 1825 阅读 · 1 评论 -
[算法系列]数据结构之——图(1):接口定义与实现+DFS+BFS
本文以实际代码一步步地定义和实现了图的基本定义与操作。本部分包括图的定义,两种遍历,拓扑排序相关知识与实现。本文中图的实际结构与部分教材的邻接表结构有微小差异,主要是用Set替代了顶点中的链表,Map替代了存放顶点的顺序表。1.图的基本操作接口定义public interface Graph<V,E> { int edgesSize(); //边的个数 int verticesSize(); //顶点的个数 void addVertex(V v); //添原创 2020-06-15 23:50:09 · 1085 阅读 · 0 评论 -
[算法系列] 数据结构并查集union-find sets多图详解:介绍+2种实现+多种优化
1. 为什么会有并查集?并查集做啥用的?假设有n个村庄,有些村庄之间有连接的路,有些村庄之间没有:设计一个数据结构,能够快速执行2个操作查询2个村庄之间是否有连接的路连接2个村庄对于上面这两个需求,可以用我们已知的一些数据结构进行完成(数组、链表、平衡二叉树、集合),比如用一个数组维护所有有连接的村庄。不过这样查询find和连接union的时间复杂度都为O(n)级别的。而并查集就是专门做这两件事的数据结构:“并”union 和 “查” find并且其查询、连接的均摊时间复杂度最佳可优化原创 2020-05-28 22:16:43 · 1486 阅读 · 0 评论 -
[算法系列]贪心算法策略介绍+10道经典例题解析
本部分介绍“贪心算法“ 。 接下来会介绍动态规划。回顾一下之前脉络:什么是递归?如何设计递归算法? || \/常见的递归算法应用(快排、归并、堆、) || \/深入递归本质:数学归纳,递推 || \/深度遍历优先搜索(DFS)、回溯、剪枝 || \/贪心算法、动态规划那么贪心、动规与前面这些有什么联系呢?为什么要放在这里介绍?首先,贪心、动规和dfs这样的搜素算法实际很相似,是为了搜索解空间获得(满足条件)的解。DFS是按照一定的(深度优原创 2020-05-23 00:17:52 · 9256 阅读 · 0 评论 -
[算法系列]搞懂DFS(2)——模式套路+经典例题详解(n皇后问题,素数环问题)
标题[算法系列]DFS(2)——模式套路+例题详解(n皇后问题,素数环问题)本文是算法系列递归讲解中讲述dfs的第二篇, 在上一篇: [算法系列]搞懂DFS(1)——经典例题(数独游戏, 部分和, 水洼数目)图文详解中, 已经通过三个例题讲述了dfs的思路以及设计方法, 本文先归纳常见dfs套路, 总结一般思路, 之后再通过两个经典例题(n皇后, 素数环) 进行巩固加深.1. dfs常见模式...原创 2020-03-21 14:49:36 · 1684 阅读 · 1 评论 -
[算法系列]搞懂DFS(1)——经典例题(数独游戏, 部分和, 水洼数目)图文详解
[算法系列] 搞懂DFS(1)——经典例题(数独游戏, 部分和, 水洼数目)图文详解本文是递归系列的四篇文章, 往期回顾:[算法系列] 搞懂递归, 看这篇就够了 !! 递归设计思路 + 经典例题层层递进[算法系列] 递归应用: 快速排序+归并排序算法及其核心思想与拓展 … 附赠 堆排序算法[算法系列] 深入递归本质+经典例题解析——如何逐步生成, 以此类推,步步为营在前面的递归相关的...原创 2020-03-08 00:14:10 · 3955 阅读 · 2 评论 -
[算法系列] 深入递归本质+经典例题解析——如何逐步生成, 以此类推,步步为营
[算法系列] 深入递归(1)本文是递归系列的第三篇, 第一篇介绍了递归的形式以及递归设计方法(迭代改递归),;第二篇以递归为引子, 详细介绍了快排和归排以及堆排的核心思想; 本篇主要通过几个题, 从递推, 归纳法的角度, 深入了介绍了递归的本质和具体应用.往期回顾:搞懂递归, 看这篇就够了 !! 递归设计思路 + 经典例题层层递进递归应用: 快速排序+归并排序算法及其核心思想与拓展 … ...原创 2020-02-29 15:56:35 · 2622 阅读 · 0 评论 -
[算法系列] 多维数组--超详细解答!!记几道经典的多维数组习题(顺时针打印矩阵,z字型打印矩阵等)
[算法系列] 多维数组–记几道经典的多维数组习题1. 顺时针打印二维数组传入一个二维数组1 2 3 45 6 7 89 10 11 1213 14 15 16顺时针打印出: 1 2 3 4 8 12 16 15 14 13 9 5 6 7 8 12 11 10分析: 有如下二维数组, 那么它具体打印顺序是像右面这样的:按照 1…5...原创 2020-02-09 21:01:47 · 3204 阅读 · 1 评论 -
[算法系列] 递归应用: 快速排序+归并排序算法及其核心思想与拓展 .. 附赠 堆排序算法
[算法系列] 递归应用: 快速排序+归并排序算法, 核心思想与拓展 … 附赠 堆排序算法分治: 将原问题划分成若干个规模较小而原问题一致的子问题; 递归地解决这些子问题, 然后再合并其结果, 就得到原问题的解分治模式在每一层递归上都有三个步骤:分解devide : 将原问题分解(划分)成一系列的子问题解决conquer: 递归地解决各子问题, 若子问题足够小, 则直接有解合并combi...原创 2020-02-03 14:01:39 · 7595 阅读 · 0 评论 -
[算法系列] 搞懂递归, 看这篇就够了 !! 递归设计思路 + 经典例题层层递进
[算法系列] 搞懂递归, 看这篇就够了 !! 递归设计思路 + 经典例题层层递进从学习写代码伊始, 总有个坎不好迈过去, 那就是遇上一些有关递归的东西时, 看着简短的代码, 怎么稀里糊涂就出来了. 今天我们就来好好好探讨递归这个东西. 本文结合他的相关概念,引出有关递归程序设计的一些例子,并加以说明, 其旨在更好地理解递归,使用递归.0 什么是递归?很多文章对于递归有很深刻的字面上的解释, ...原创 2020-01-30 18:18:24 · 10072 阅读 · 0 评论 -
[算法系列]优先队列,堆与堆排序
优先队列,堆与堆排序1 优先队列有时我们在处理有序元素时,并不一定要求他们全部有序. 很多情况下我们会收集一些元素, 处理当前最大的元素, 然后再收集更多元素, 再处理当前最大元素 …这种情况下, 一个合适的数据结构一个支持两种操作 : 删除最大元素和 插入元素. 这种数据类型叫做 优先队列.我们可以使用有序或无序的数组或链表实现.使用无序序列是解决这个问题的 惰性方法, 我们仅在必要的时...原创 2019-10-31 16:21:36 · 2989 阅读 · 0 评论 -
七大排序(简洁明了,注释分明,思路清晰)
七大排序不废话,直接上代码,注释分明,思路清晰。sortingmethod.h#ifndef SORTINGMETHOD_H#define SORTINGMETHOD_H#include <iostream>#define SORTTYPE intusing namespace std;/** * insert sort *//*direct insert...原创 2019-06-25 13:45:10 · 2135 阅读 · 0 评论