算法
数据结构算法。
conetwo
csdn
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
堆排序算法
void BuildMaxHeap(int a[], int len) { for(int i = len/2; i > 0 ; i--) { AdjustDown(a, i, len); } } // 向下调整 void AdjustDown(int a[], int k, int len) { a[0] = a[k]; for...原创 2017-03-08 14:17:38 · 354 阅读 · 0 评论 -
二维数组(动态规划)
简要描述: 给定一个M行N列的矩阵(M*N个格子),每个格子中放着一定数量的平安果。 你从左上角的各自开始,只能向下或者向右走,目的地是右下角的格子。 每走过一个格子,就把格子上的平安果都收集起来。求你最多能收集到多少平安果。 注意:当经过一个格子时,需要一次性把格子里的平安果都拿走。 (1<=N,M<=50);每个格子里的平安果数量是0到1000(包含0和1000...原创 2018-08-08 16:59:29 · 5065 阅读 · 1 评论 -
质数因子
输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 ) int main(void) { long input; while (cin >> input) { while (input != 1) { for (int i = 2; i <= in...原创 2018-08-02 14:32:58 · 212 阅读 · 0 评论 -
十六进制的数值字符串,输出该数值的十进制字符串
写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入) #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;cmath&gt; using namespace std; int main(void) { string str; int i = 0, len, sum; ...原创 2018-08-02 14:14:12 · 1247 阅读 · 0 评论 -
计算字符串最后一个单词的长度,单词以空格隔开
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int Num(char *str) { if (str == nullptr) return 0; char *ptr = str; int num = 0, index = 0, n = 0; whi...原创 2018-08-01 15:54:58 · 1146 阅读 · 0 评论 -
一颗二叉搜索树,找出树中的第k大节点
最朴素的想法,中序遍历就是二叉搜索树的递增序列,那直接写出整棵树的中序遍历即可。 class Solution { public: TreeNode* KthNode(TreeNode* pRoot, int k) { if (!pRoot || k < 0) return nullptr; vector<...原创 2018-08-01 13:48:08 · 4723 阅读 · 1 评论 -
字符串转为整数,实现atoi功能
atoi通过全局变量来区分返回0的情况。 如果是非法输入,返回0,并把这个全局变量设为特殊标志; 如果输入是”0”,则返回0,不会设置全局变量。 enum Status { kValid = 0, kInvalid}; int g_nStatus = kValid; int StrToInt(const char* str) { g_nStatus = kInvalid; ...原创 2018-07-28 15:30:12 · 431 阅读 · 0 评论 -
从扑克牌中随机抽5张,判断是不是顺子,大小王可以看成任意数字(看成0)
首先将数组排序 再统计0的个数和相邻数字之间的空缺总数 如果空缺总数小于或等于0的个数,那么这个数组就是连续的,反之不连续 bool IsContinuous(int* number, int length) { if(numbers == NULL || length < 1) { return false; } qsort(numb...原创 2018-07-23 16:17:39 · 2670 阅读 · 0 评论 -
简单选择排序,冒泡排序
简单选择排序,冒泡排序思路描述 void selectSort(int a[], int n) { for(i =0 ; i 1; i++) { min = i; for(j = i; j 1; j++) if(a[j] min]) min = j; if(min != i) Swap(a[i], a[原创 2017-05-26 22:38:33 · 282 阅读 · 0 评论 -
快速排序算法
int Partition(int a[], int low, int high) { int pivot = a[low]; while(low { while(low = pivot) high--; a[low] = a[high]; // 将比枢轴值小的的元素移动到左端 while(lo原创 2017-03-08 15:28:07 · 628 阅读 · 0 评论 -
直接插入排序和折半插入排序算法
void insertSort(int a[], int n) { int i, j; for(i = 2; i { a[0] = a[i]; for(j = i - 1; a[0] a[j+1] = a[j]; a[j +1] = a[0]; }原创 2017-03-08 15:50:49 · 554 阅读 · 0 评论 -
归并排序算法
int *B = (int *)malloc((n+1) * sizeof(int)); void Merge(int a[], int low, int mid, int high) { for(int k = low; k { B[k] = a[k]; } for(i = low, j = mid + 1, k = i;原创 2017-03-08 14:50:29 · 263 阅读 · 0 评论 -
最小的K个数--(快排法)
class Solution { public: vector<int> GetLeastNumbers_Solution(vector<int> input, int k) { vector<int> result; int len = input.size(); if (len == 0 ||...原创 2018-09-04 15:14:04 · 334 阅读 · 0 评论
分享