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 · 305 阅读 · 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 · 1499 阅读 · 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 · 531 阅读 · 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 · 3414 阅读 · 7 评论 -
用C++模板实现快速排序算法
#include <iostream>#include <string>#include <vector>#include <algorithm>#include <time.h>#define _CRT_SECURE_NO_WARNINGSusing namespace std;template<typename T>void quicksort(T data[], int first, int last)原创 2020-06-11 16:28:33 · 765 阅读 · 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 · 938 阅读 · 0 评论