
数据结构和算法
zehuawong
小小程序猿
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
0-1背包解决整数求和组合数
给定整数n,取若干个1到n的整数可求和等于整数m,编程求出所有组合的个数。比如当n=6,m=8时,有四种组合:[2,6], [3,5], [1,2,5], [1,3,4]。限定n和m小于120 输入描述: 整数n和m 输出描述: 求和等于m的所有组合的个数。 输入例子1: 6 8 输出例子1: 4 #include<iostream> using namespa...原创 2018-09-09 12:12:58 · 1589 阅读 · 0 评论 -
单链表反转
方法一 思路就是:从原链表的头部一个一个取节点并插入到新链表的头部 struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* Rev...转载 2018-10-22 22:09:51 · 235 阅读 · 0 评论 -
二叉树的三种递归遍历方式和非递归方式
递归遍历 1、前序遍历 void PreOrderTraverse(BiTreeNode *r) { if(r) { cout<<r->data; PreOrderTraverse(r->lchild ); PreOrderTraverse(r->rchi...原创 2018-09-14 10:33:06 · 241 阅读 · 0 评论 -
排序算法的稳定性分析
参考: https://baike.baidu.com/item/%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E7%A8%B3%E5%AE%9A%E6%80%A7/9763250?fr=aladdin 堆排序、快速排序、希尔排序、直接选择排序不是稳定的排序算法, 而基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法。 (1)冒泡排序 ...转载 2018-09-13 18:14:55 · 1158 阅读 · 0 评论 -
图解希尔排序
参考:https://www.cnblogs.com/chengxiao/p/6104371.html 题目描述 给出一个数据序列,使用希尔排序算法进行从小到大的排序。 间隔gap使用序列长度循环除2直到1。 输入 第一行输入t,表示有t个测试示例 第二行输入n,表示第一个示例有n个数据 第三行输入n个数据,都是正整数,数据之间用空格隔开 以此类推 输出 对每个示例,输出希尔...原创 2018-09-13 18:01:58 · 857 阅读 · 0 评论 -
给定二维平面上的n个点,找到位于同一直线上的最大点数
参考https://blog.youkuaiyun.com/baidu_37964071/article/details/81021935 我们都知道,两点可以确定一条直线,而且可以写成y = ax + b的形式,在一条直线上的点都满足这个公式。所以这些给定点两两之间都可以算一个斜率,每个斜率代表一条直线,对每一条直线,带入所有的点看是否共线,并计算个数,这是整体的思路。 当两个点重合时,无法确定一条直线...原创 2018-09-13 14:59:51 · 2902 阅读 · 2 评论 -
已经二叉树前序和中序构建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 #include<iostream> #include<vector> using namespace std; struct Tre...原创 2018-09-07 17:18:08 · 215 阅读 · 0 评论 -
无重复字符的最长子串的长度
#include&amp;lt;iostream&amp;gt; #include&amp;lt;string&amp;gt; #include&amp;lt;set&amp;gt; using namespace std; class Solution { public: bool isUnique(const string &amp;amp;s, int start, int en原创 2018-09-12 21:13:01 · 288 阅读 · 0 评论 -
图解堆排序
图解堆排序 //代码如下 #include<iostream> using namespace std; //调整大顶堆(仅是调整过程,建立在大顶堆已构建的基础上) void adjustHeap(int *arr, int i, int len) { int temp = arr[i]; //先取出当前元素i for (int k = i * 2 + 1...转载 2018-09-07 01:20:32 · 427 阅读 · 0 评论 -
动态规划求连续子数组的最大和
题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序...原创 2018-09-16 11:24:56 · 510 阅读 · 0 评论 -
遍历HashMap的4种方式及区别
【推荐】使用 entrySet 遍历 Map 类集合 KV,而不是 keySet 方式进行遍历。 说明:keySet 其实是遍历了 2 次,一次是转为 Iterator 对象,另一次是从 hashMap 中取出 key 所对应的 value。而 entrySet 只是遍历了一次就把 key 和 value 都放到了 entry 中,效 率更高。如果是 JDK8,使用 Map.foreach 方法。...转载 2019-08-16 16:29:17 · 257 阅读 · 0 评论