【C/C++】循环链表实现约瑟夫问题
摘要:#include <iostream> using namespace std; typedef struct node { int data; node* next; node() :data(0), next(nullptr) {} node(int x) :data(x), next(null
阅读全文
posted @
2024-04-07 11:27
wshidaboss
阅读(123)
推荐(0) 编辑
【C++】返回每一层二叉树的平均值(层序遍历)
摘要://返回每一层二叉树的平均值(广度优先搜索,队列) 层序遍历 vector<double> averageOfLevels(TreeNode* root) { vector<double> ans; if (!root) return ans; queue<TreeNode*> q; q.push(
阅读全文
posted @
2024-03-06 11:35
wshidaboss
阅读(7)
推荐(0) 编辑
【C++】判断一颗二叉树是否对称
摘要:四步法: (1)如果两个子树都为空指针,则它们相等或对称 (2)如果两个子树只有一个为空指针,则它们不相等或不对称 (3)如果两个子树根节点的值不相等,则它们不相等或不对称 (4)根据相等或对称要求,进行递归处理。 //四步法判断一颗二叉树是否对称 //主函数 bool isSymmetric(Tr
阅读全文
posted @
2024-03-06 11:34
wshidaboss
阅读(71)
推荐(0) 编辑
【C++】翻转二叉树(递归、非递归)
摘要://使用递归翻转二叉树 TreeNode* reverseTree(TreeNode* root) { if (!root) return root; swap(root->left, root->right); reverseTree(root->left); reverseTree(root->
阅读全文
posted @
2024-03-06 11:30
wshidaboss
阅读(43)
推荐(0) 编辑
【C++】求二叉树的最大深度和最小深度
摘要://求一颗二叉树的最大深度 求高度:后序遍历 求深度:前序遍历 int maxDepth(TreeNode* root) { return root ? 1 + max(maxDepth(root->left), maxDepth(root->right)) : 0; } //求一颗二叉树的最小深度
阅读全文
posted @
2024-03-06 11:30
wshidaboss
阅读(65)
推荐(0) 编辑
【C++】二叉树的前序、中序、后序遍历(递归、非递归)
摘要:#include <vector> #include <iostream> #include <string> using namespace std; //二叉树的定义 struct TreeNode { int val; TreeNode* left; TreeNode* right; Tree
阅读全文
posted @
2024-03-06 11:28
wshidaboss
阅读(47)
推荐(0) 编辑
【C++】两两交换链表中的节点
摘要:#include <iostream> #include <stack> using namespace std; struct ListNode { int val; ListNode* next; ListNode(int x) :val(x), next(nullptr) {} }; List
阅读全文
posted @
2024-02-12 17:00
wshidaboss
阅读(9)
推荐(0) 编辑
【C++】给定两个增序的链表,试将其合并成一个增序的链表。
摘要:给定两个增序的链表,试将其合并成一个增序的链表。 #include <iostream> #include <stack> using namespace std; struct ListNode { int val; ListNode* next; ListNode(int x) :val(x),
阅读全文
posted @
2024-02-12 13:45
wshidaboss
阅读(7)
推荐(0) 编辑
【C++】力扣101-平方数之和
摘要:给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c 。 使用双指针: #include <iostream> #include <math.h> using namespace std; bool judge(long c) { if (c < 0) retu
阅读全文
posted @
2024-02-03 11:48
wshidaboss
阅读(119)
推荐(0) 编辑
【C++】力扣101-分配问题和区间问题
摘要:1.有一群孩子和一堆饼干,每个孩子有一个饥饿度,每个饼干都有一个大小。每个孩子只能吃一个饼干,且只有饼干的大小不小于孩子的饥饿度时,这个孩子才能吃饱。求解最多有多少孩子可以吃饱。 #include <iostream> #include <vector> #include <algorithm> u
阅读全文
posted @
2024-02-01 17:06
wshidaboss
阅读(36)
推荐(0) 编辑
【C/C++】几大排序算法:选择排序、插入排序、冒泡排序、归并排序、快速排序
摘要:#include <iostream> using namespace std; void swap(int* a, int* b) { int tmp = *a; *a = *b; *b = tmp; } void selectSort(int ret[], int n) { for (int i
阅读全文
posted @
2024-01-03 16:13
wshidaboss
阅读(8)
推荐(0) 编辑
C/C++ 数据结构五大核心算法之回溯法-N皇后问题
摘要:N皇后问题:在 n * n 的棋盘上要摆 n 个皇后,要求:任何两个皇后不同行,不同列也不在同一条斜线上,求给一个整数 n ,返回 n 皇后的摆法数。 1.非递归调用: #include <iostream> #include <math.h> #define N 8 using namespace
阅读全文
posted @
2023-08-05 15:12
wshidaboss
阅读(341)
推荐(0) 编辑
C/C++ 数据结构五大核心算法之动态规划算法-给你一根长度为 n 的金条,请把金条剪成 m 段 (m 和 n 都是整数,n>1 并且 m>1)每断金条的长度记为 k[0],k[1],…,k[m].请问 k[0] k[1]…*k[m]可能的最大乘积是多少?
摘要:动态规划也是一种分治思想,但与分治算法不同的是,分治算法是把原问题分解为若干子问题,自顶向下,求解各子问题,合并子问题的解从而得到原问题的解。动态规划也是自顶向下把原问题分解为若干子问题,不同的是,然后自底向上,先求解最小的子问题,把结果存储在表格中,在求解大的子问题时,直接从表格中查询小的子问题的
阅读全文
posted @
2023-08-03 11:14
wshidaboss
阅读(67)
推荐(0) 编辑
C/C++ 数据结构五大核心算法之分治法
摘要:分治法——见名思义,即分而治之,从而得到我们想要的最终结果。分治法的思想是将一个规模为 N 的问题分解为 k 个较小的子问题,这些子问题遵循的处理方式就是互相独立且与原问题相同。 两部分组成: 分(divide):递归解决较小的问题 治(conquer):然后从子问题的解构建原问题的解 三个步骤:
阅读全文
posted @
2023-08-02 14:58
wshidaboss
阅读(86)
推荐(0) 编辑
C/C++ 数据结构链栈的基本操作实现
摘要:#include <iostream> #include <string.h> using namespace std; typedef int SElemType; typedef struct StackNode { SElemType data; struct StackNode* next;
阅读全文
posted @
2023-03-06 16:50
wshidaboss
阅读(38)
推荐(0) 编辑
C/C++ 数据结构堆排序算法的实现
摘要:1.堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特 点快速定位指定索引的元素。 2.(选择排序工作原理 - 第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置, 然后再从剩余的未排序元素中寻找到最小(大)元素,然后
阅读全文
posted @
2023-03-06 14:31
wshidaboss
阅读(32)
推荐(0) 编辑
C/C++ 数据结构堆结构算法的实现
摘要:#include <stdio.h> #include <stdlib.h> #include <string.h> //堆的算法实现 #define DEFAULT_CAPCITY 128 typedef struct _Heap { int* arr; //存储堆元素的数组 int size;
阅读全文
posted @
2023-03-04 19:35
wshidaboss
阅读(21)
推荐(0) 编辑
C/C++ 数据结构优先级队列的实现(使用二级指针)
摘要:#include <iostream> #include <Windows.h> #include <iomanip> //优先级队列的实现 using namespace std; #define MaxSize 5 typedef int DataType; //队列中的元素类型 typedef
阅读全文
posted @
2023-03-04 10:30
wshidaboss
阅读(63)
推荐(0) 编辑
C/C++ 数据结构使用数组实现队列的基本操作
摘要://使用数组实现队列 #include <iostream> #include <Windows.h> using namespace std; #define MAXSIZE 5 //队列的最大容量 typedef int DataType; //队列中的元素类型 typedef struct Q
阅读全文
posted @
2023-03-03 13:31
wshidaboss
阅读(147)
推荐(0) 编辑