Algorithm
文章平均质量分 69
zhendongzd
潜心学习
展开
-
二分查找算法
二分查找学习总结原创 2023-03-05 23:01:19 · 407 阅读 · 0 评论 -
平衡二叉树
平衡二叉树 ——AVL(Adelson-Velskii Landis)原创 2022-01-10 00:20:22 · 289 阅读 · 0 评论 -
字典树-小记
字典树通俗的叫法有:Trie树、单词查找树、前缀树,是一种哈希树的变种为什么说非典型呢?因为它和一般的多叉树不一样,尤其在结点的数据结构设计上,结构体差异一般的多叉树的结点是这样的typedef struct TreeNode { VALUETYPE value; //结点值 TreeNode* children[NUM]; //指向孩子结点}TreeNode;字典树的结构体是这样的typedef struct TrieNode {原创 2021-12-08 20:13:26 · 430 阅读 · 0 评论 -
全排列——小记
题目:按照字典序从小到大打印出n个数的全排列(1~n)比如:n=3,则结果为:123132213231312321打印全排列有很多种方法,单纯的打印全排列可以使用递归或者BFS递归代码:int g_totalNum = 0;int g_data[11];void Swap(int *dataA, int *dataB){ int m = *dataA; *dataA = *dataB; *dataB = m;}void Perm(int原创 2021-11-15 22:40:36 · 141 阅读 · 0 评论 -
约瑟夫算法——小记
题目剑指 Offer 62. 圆圈中最后剩下的数字程序int lastRemaining(int n, int m){ int old_num = 0; int new_num = 0; for (int count = 1; count < n; count++) { old_num = new_num; new_num = (old_num + m) % (count + 1); } ..原创 2021-11-08 22:19:46 · 100 阅读 · 0 评论 -
141. 环形链表
141.环形链表typedef struct ListNode ListNode;bool hasCycle(struct ListNode *head) { ListNode *fast = head; ListNode *slow = head; while((fast != NULL) && (fast->next != N...原创 2020-02-25 00:28:49 · 106 阅读 · 0 评论 -
字符串之KMP算法
KMP算法的精髓在于得到PMT(Partial Match Table)表格,有些同学使用next表示,这是因为在实际使用中使用的是pmt左移一个单位之后的表格。要想得到PMT表格,首先需要知道以下几个概念:子串:不包含字符串本身前缀:字符串子串集合中以首字符开头的子串后缀:字符串子串集合中以尾字符结束的子串PMT:前缀集合和后缀集合中相同字符串的最大长度举例:A B ...原创 2019-11-07 00:41:46 · 156 阅读 · 0 评论 -
547.朋友圈
力扣 547.朋友圈本题可以使用并查集的方法做,也可以使用邻接矩阵的深度优先搜索方法做,本篇文章使用邻接矩阵的深度优先搜索方法void Dfs(int startRow, int matrixNum, bool **visitFlag, int** input){ int i; if (startRow == matrixNum) { retur...原创 2019-10-30 01:22:44 · 286 阅读 · 0 评论 -
988.从叶结点开始的最小字符串
力扣 988.从叶结点开始的最小字符串1、利用二叉树先序遍历,记录经过的所有节点的值2、新增停止条件,当左右孩子都为null时,即可认为找到了一条从根到叶子的一条路径,3、将该路径上的字符串翻转,并与历史值进行比较,得出最小值4、注意点window下可以按照最长的字符串进行比较大小,linux下只能按照最短字符串进行比较/** * Definition for a bi...原创 2019-10-30 01:17:49 · 380 阅读 · 0 评论 -
934. 最短的桥
力扣934. 最短的桥#include <stdbool.h>#include <stdio.h>#define MAX_LEGTH 102#define DIRECTION_NUM 4#define ISLAND_NUM 2typedef struct Point { int rowId; int columnId;}Point...原创 2019-10-27 12:56:19 · 276 阅读 · 0 评论 -
695. 岛屿的最大面积
力扣695. 岛屿的最大面积#include <stdio.h>#include <string.h>#include <stdlib.h>#include <stdbool.h>#define ISLANDS_MAX_ROW_NUM 52#define DIRECTION_NUM 4bool g_visitF...原创 2019-10-26 23:16:14 · 115 阅读 · 0 评论 -
数据结构与算法
C语言实现 本地编译环境搭建、SI使用 栈、队列 栈 队列 字符串 匹配算法 大整数运算 BFS 岛屿的最大面积 最短的桥 DFS ...原创 2019-10-26 23:16:05 · 266 阅读 · 1 评论 -
C 栈
#include <stdio.h>#include <stdlib.h>#include <stdbool.h>typedef int StackElementType;typedef struct StackNode { StackElementType data; struct StackNode *next;} Sta...原创 2019-10-26 23:16:21 · 181 阅读 · 0 评论 -
C 队列
C语言实现队列#include <stdio.h>#include <stdlib.h>#include <stdbool.h>typedef int QueueElementType;typedef struct QueueNode { QueueElementType data; struct QueueNode *next;...原创 2019-10-26 23:15:58 · 164 阅读 · 0 评论 -
求两个字符串的最长公共子串(LCS)
最长公共子串(LCS),有三种情况:1.公共子串的元素必须相邻. 2.公共子串的元素可以不相邻联单3. 求多个字符串而不是两个字符串的最长公共子串1.公共子串的元素必须相邻: LCS问题就是求两个字符串最长公共子串的问题。解法就是用一个矩阵来记录两个字符串中所有位置的两个字符之间的匹配情况,若是匹配则为1,否则为0。然后求出对角线最长的1序列,其对应的位置就是最长匹配子串的位转载 2015-08-21 21:32:50 · 3035 阅读 · 0 评论 -
SwordOffer
#include #include "string.h"#include "stdlib.h"#include "stdio.h"#include #include #include #include using namespace std;/********************************************************************原创 2016-09-01 06:41:40 · 659 阅读 · 0 评论 -
AlgorithmTesting
// DataStructureTesting.cpp : 定义控制台应用程序的入口点。//#include "stdlib.h"#include "stdio.h"#include #include #include using namespace std;#define OK 1#define ERROR 0#define MATRIX 8/************原创 2016-09-01 06:42:33 · 674 阅读 · 0 评论 -
OJ算法
蛇形矩阵 private static String serpentineMatrix(int n) { StringBuilder builder = new StringBuilder(); for (int i = 1; i <= n; i++) { // 每一行的第一个元素是(i-1)*i/2+1原创 2016-09-05 23:54:45 · 1012 阅读 · 0 评论 -
超大整数相除
问题描述求两个大的正整数相除的商输入数据第 1 行是测试数据的组数n,每组测试数据占2 行,第1 行是被除数,第2 行是除数。每组测试数据之间有一个空行,每行数据不超过100 个字符输出要求n 行,每组测试数据有一行输出是相应的整数商输入样例3240533731296337335900926045774205743923049649393035559579766原创 2016-10-04 23:54:15 · 968 阅读 · 0 评论 -
vsCode本地编译环境搭建
vscode本地编译环境搭建原创 2019-10-26 23:17:15 · 5139 阅读 · 1 评论 -
source insight 4.0 使用make命令编译
1、新建SI工程,在SI工程的代码目录为makefile所在的目录,如下图2、显示build toolbar工具栏显示效果如下点击上图的第一个图标,弹出如下图所示的窗口3、选择Build Project,在右侧的Run窗口中输入“make”,目的是调用makefile文件,进行编译4、点击 Run Project,在右侧的Run窗口输入要运行的程序的路径,该路径...原创 2019-10-26 23:16:59 · 8652 阅读 · 0 评论 -
47. 全排列 II
力扣 47全排列 II,花了些时间重新学习了暴力枚举法,直接上代码#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdbool.h>/* 函 数 名: FullPermutation * 函数功能: 包含重复字符的排列 * dat...原创 2019-09-28 02:26:30 · 138 阅读 · 0 评论 -
程序员必须知道的10大基础实用算法及其讲解
算法一:快速排序算法快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法(Divide and conquer)策转载 2015-05-12 09:33:18 · 615 阅读 · 0 评论