![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法
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 · 1509 阅读 · 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 · 184 阅读 · 0 评论 -
二叉树的三种递归遍历方式和非递归方式
递归遍历1、前序遍历void PreOrderTraverse(BiTreeNode *r) { if(r) { cout<<r->data; PreOrderTraverse(r->lchild ); PreOrderTraverse(r->rchi...原创 2018-09-14 10:33:06 · 197 阅读 · 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 · 1107 阅读 · 0 评论 -
图解希尔排序
参考:https://www.cnblogs.com/chengxiao/p/6104371.html 题目描述给出一个数据序列,使用希尔排序算法进行从小到大的排序。间隔gap使用序列长度循环除2直到1。输入第一行输入t,表示有t个测试示例第二行输入n,表示第一个示例有n个数据第三行输入n个数据,都是正整数,数据之间用空格隔开以此类推输出对每个示例,输出希尔...原创 2018-09-13 18:01:58 · 789 阅读 · 0 评论 -
给定二维平面上的n个点,找到位于同一直线上的最大点数
参考https://blog.csdn.net/baidu_37964071/article/details/81021935我们都知道,两点可以确定一条直线,而且可以写成y = ax + b的形式,在一条直线上的点都满足这个公式。所以这些给定点两两之间都可以算一个斜率,每个斜率代表一条直线,对每一条直线,带入所有的点看是否共线,并计算个数,这是整体的思路。当两个点重合时,无法确定一条直线...原创 2018-09-13 14:59:51 · 2753 阅读 · 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 · 170 阅读 · 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 · 234 阅读 · 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 · 376 阅读 · 0 评论 -
动态规划求连续子数组的最大和
题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序...原创 2018-09-16 11:24:56 · 474 阅读 · 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 · 213 阅读 · 0 评论