![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++算法设计
文章平均质量分 52
Aki-Tomoya
让我们一起搭建虚拟的第二世界吧!
失去生命的远古肥宅博客:http://r81jm1.coding-pages.com/
展开
-
C++算法成长之路:反转链表 (medium)
题目: 给你单链表的头节点 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 图示: 输入:head = [1,2,3,4,5], left = 2, right = 4 输出:[1,4,3,2,5] 输入:head = [5], left = 1, right = 1 输出:[5] 思路: 设置虚拟头结点,先避免大量的分类。 接着将pre节点走到left的左边,用for原创 2021-03-18 21:33:37 · 280 阅读 · 0 评论 -
将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。
题目描述: 将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。 思想:从大往小进位 本题思考点在于从大到小进位。算法的核心三行相当于执行了我们平常的除法。 #include <algorithm> #include <cstdio> #include <iostream> #include <string> using namespace std; /* 示例:输入123 1 % 2 = 1; //将余数传给下一位 1 / 2 = 0;原创 2020-10-03 13:12:31 · 1442 阅读 · 0 评论 -
使用动态规划法求解最长公共子序列
#include<iostream> using namespace std; const int NUM = 51; int dp[NUM][NUM]; int b[NUM][NUM]; // 记录位置 void LCSLength(int m, int n, char x[], char y[]) { for (int i = 1; i <= m; ++i) //将第一排第一列全部置零 { dp[i][0] = 0; } for (int i原创 2020-06-12 12:42:08 · 524 阅读 · 0 评论 -
采用基于“五元中值组取中值分割法”的线性 时间选择算法,找出 N 个元素集合 S 中的第 k个最小的元素,使其在线性时间内解决
#include<iostream> #include<math.h> #include<time.h> #include<stdlib.h> usingnamespace std; constint INF = 2147483647; classSortableList { public: SortableList(intmSize) { maxSize= mSize;原创 2020-06-11 16:44:00 · 3364 阅读 · 7 评论 -
用C++模板实现快速排序算法
#include <iostream> #include <string> #include <vector> #include <algorithm> #include <time.h> #define _CRT_SECURE_NO_WARNINGS using namespace std; template<typename T> void quicksort(T data[], int first, int last)原创 2020-06-11 16:28:33 · 746 阅读 · 0 评论 -
C++实现两路合并算法
#include <iostream> using namespace std; void Merge(int *a, int l, int m, int r){ int n1= m - l + 1; int n2 = r - m ; int *L = new int[n1+1]; int *R = new int[n2+1]; int i ,j , k; for(i = 0; i < n1; i++){ L[i] = a原创 2020-06-11 13:39:53 · 920 阅读 · 0 评论