- 朋友圈 班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。 给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你必须输... 朋友圈 班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。 给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你必须输...
- 1. 堆:什么是堆?又该怎么理解呢? ①堆通常是一个可以被看做一棵树的数组对象。 堆总是满足下列性质: ·堆中某个节点的值总是不大于或不小于其父节点的值; · 堆总是一棵完全二叉树。 将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。 ②堆是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分... 1. 堆:什么是堆?又该怎么理解呢? ①堆通常是一个可以被看做一棵树的数组对象。 堆总是满足下列性质: ·堆中某个节点的值总是不大于或不小于其父节点的值; · 堆总是一棵完全二叉树。 将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。 ②堆是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分...
- 下午的时候写了一下位运算的:位运算 - 初见 我个人感觉如果对位运算不是很熟的话可以先看一下上面那个 文章目录 位图 - 数据结构位图设计数据结构构造新元素插入位图中元素移出位图元素查找 完整代码找出二次出现的数据思考 位图 - 数据结构 为什么要位图?上一篇里面有个例子,是这样的: 你要给1亿个int型数据去重(本篇不讲int以外... 下午的时候写了一下位运算的:位运算 - 初见 我个人感觉如果对位运算不是很熟的话可以先看一下上面那个 文章目录 位图 - 数据结构位图设计数据结构构造新元素插入位图中元素移出位图元素查找 完整代码找出二次出现的数据思考 位图 - 数据结构 为什么要位图?上一篇里面有个例子,是这样的: 你要给1亿个int型数据去重(本篇不讲int以外...
- #include <stdio.h> int main(){ int n, top, j; char str[10000],stack[5000]; scanf("%d",&n); while (n--) { scanf("%s",str); if (str[0] == ')' || str[0] == ']') { stack[0] = '1'... #include <stdio.h> int main(){ int n, top, j; char str[10000],stack[5000]; scanf("%d",&n); while (n--) { scanf("%s",str); if (str[0] == ')' || str[0] == ']') { stack[0] = '1'...
- 举例子: int data[3][4] ={ {1,2,3,4} , {5,6,7,8} , {9,10,11,12} }; int total = sum(data,3); 请自己先尝试写出sum函数的原型 思考过后,请继续看下面详细分析: data 是一个数组名,该数组有3个元素,第一个元素本身又是一个数组,有4个int 值组成。 因此... 举例子: int data[3][4] ={ {1,2,3,4} , {5,6,7,8} , {9,10,11,12} }; int total = sum(data,3); 请自己先尝试写出sum函数的原型 思考过后,请继续看下面详细分析: data 是一个数组名,该数组有3个元素,第一个元素本身又是一个数组,有4个int 值组成。 因此...
- #include <stdio.h>#include <stdlib.h> #define LIST_INIT_SIZE 100#define LISTLNCREMENT 10#define OK 1#define ERROR 0#define OVERFLOW -2 typedef int ElemType; typedef struct{ Elem... #include <stdio.h>#include <stdlib.h> #define LIST_INIT_SIZE 100#define LISTLNCREMENT 10#define OK 1#define ERROR 0#define OVERFLOW -2 typedef int ElemType; typedef struct{ Elem...
- 思维导图是依旧还没有的啊 文章目录 栈①后进先出的叫栈②API设计③顺序栈实现④双端栈实现多端栈 ⑤动态栈⑥汉诺塔⑦单调栈性质: 波兰式与逆波兰式什么是波兰表达式中缀表达式转逆波兰表达式后缀表达式运算流程放码过去 队列消息队列 栈 想当一个合格的程序员,你敢出去说你不会栈吗? 我不敢的。 栈有很多用途,也分很多种类,顺序栈、双端... 思维导图是依旧还没有的啊 文章目录 栈①后进先出的叫栈②API设计③顺序栈实现④双端栈实现多端栈 ⑤动态栈⑥汉诺塔⑦单调栈性质: 波兰式与逆波兰式什么是波兰表达式中缀表达式转逆波兰表达式后缀表达式运算流程放码过去 队列消息队列 栈 想当一个合格的程序员,你敢出去说你不会栈吗? 我不敢的。 栈有很多用途,也分很多种类,顺序栈、双端...
- #include <stdio.h>#include <stdlib.h>#include <iostream.h> #define OK 1#define ERROR 0#define OVERFLOW -2 typedef int ElemType; typedef struct LNode{ ElemType data; struct LNode *next;}LNod... #include <stdio.h>#include <stdlib.h>#include <iostream.h> #define OK 1#define ERROR 0#define OVERFLOW -2 typedef int ElemType; typedef struct LNode{ ElemType data; struct LNode *next;}LNod...
- 剑指Offer–图的操作 前言 企业笔试过程中会涉及到数据结构的方方面面,现将有关图的深度优先搜索与广度优先搜索进行整理归纳,方便日后查阅。 在已做过的笔试题目中,可用DFS解决的题目有: “地牢逃脱”–网易“遍历最短路径长度”–携程“小青蛙走迷宫”–滴滴 三道题目都是DFS的经典应用,主要采用递归+回溯的方式。 下面主要讲解一下DFS与BF... 剑指Offer–图的操作 前言 企业笔试过程中会涉及到数据结构的方方面面,现将有关图的深度优先搜索与广度优先搜索进行整理归纳,方便日后查阅。 在已做过的笔试题目中,可用DFS解决的题目有: “地牢逃脱”–网易“遍历最短路径长度”–携程“小青蛙走迷宫”–滴滴 三道题目都是DFS的经典应用,主要采用递归+回溯的方式。 下面主要讲解一下DFS与BF...
- 目录 预备的基础知识 将C-风格字符串作为参数的函数 C-风格字符串与常规char数组之间的区别 统计某个字符串中含有字符个数的程序 预备的基础知识 C-风格字符串由一系列字符组成,以空值字符结尾('\0') 将字符串作为参数时意味着传递的是 地址,但可以使用const来禁止对 字符串参数进行修改 将C-风格字符串作为参数的函数 表... 目录 预备的基础知识 将C-风格字符串作为参数的函数 C-风格字符串与常规char数组之间的区别 统计某个字符串中含有字符个数的程序 预备的基础知识 C-风格字符串由一系列字符组成,以空值字符结尾('\0') 将字符串作为参数时意味着传递的是 地址,但可以使用const来禁止对 字符串参数进行修改 将C-风格字符串作为参数的函数 表...
- 岛屿的最大面积 给定一个包含了一些 0 和 1 的非空二维数组 grid 。 一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。 找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。) 示例 1: [[0,0,1,0,... 岛屿的最大面积 给定一个包含了一些 0 和 1 的非空二维数组 grid 。 一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。 找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。) 示例 1: [[0,0,1,0,...
- 文章目录 前言:头文件源文件list *listCreate(void);void listEmpty(list *list);void listRelease(list *list);list *listAddNodeHead(list *list, void *value);list *listAddNodeTail(list *list, void *... 文章目录 前言:头文件源文件list *listCreate(void);void listEmpty(list *list);void listRelease(list *list);list *listAddNodeHead(list *list, void *value);list *listAddNodeTail(list *list, void *...
- 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 你可以假设数组中不存在重复的元素。 你的算法时间复杂度必须是 O(log n) 级别。 示例 1: 输入: nums = [... 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 你可以假设数组中不存在重复的元素。 你的算法时间复杂度必须是 O(log n) 级别。 示例 1: 输入: nums = [...
- 文章目录 前言堆,是什么?二叉堆的应用堆的插入代码实现 重新看这篇文章向下调整算法代码实现(大堆) 向上调整算法代码实现(大堆) 堆顶元素删除代码实现 堆排序(大堆)代码实现 前言 自从写完了上一篇:程序员必备数据结构:栈之后,就一直盘算着写一篇“堆”,今天动手了。 堆,是什么? 二叉堆是完全二叉树或者是近似完全二叉树。 二叉... 文章目录 前言堆,是什么?二叉堆的应用堆的插入代码实现 重新看这篇文章向下调整算法代码实现(大堆) 向上调整算法代码实现(大堆) 堆顶元素删除代码实现 堆排序(大堆)代码实现 前言 自从写完了上一篇:程序员必备数据结构:栈之后,就一直盘算着写一篇“堆”,今天动手了。 堆,是什么? 二叉堆是完全二叉树或者是近似完全二叉树。 二叉...
- 剑指Offer——归并排序思想应用 前言 在学习排序算法时,初识归并排序,从其代码量上感觉这个排序怎么这么难啊。其实归并排序的思想很简单:将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效排序算法。该算法是采用分治法(Divi... 剑指Offer——归并排序思想应用 前言 在学习排序算法时,初识归并排序,从其代码量上感觉这个排序怎么这么难啊。其实归并排序的思想很简单:将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效排序算法。该算法是采用分治法(Divi...
上滑加载中
推荐直播
-
华为云码道 × 仓颉编程:工程化AI编码探索2026/05/27 周三 19:00-21:00
刘俊杰-华为云仓颉语言专家/李炎-华为云码道技术专家/王智鹏-OpenCangjie开源社区发起人
本场直播围绕华为云仓颉语言与华为云码道的深度结合,展示华为云智能编程从零基础到高效落地的完整生态能力。以华为云码道为引擎,仓颉语言为载体,带给大家日常提效、趣味创新到极速量产的开发体验。
即将直播
热门标签