数据结构与算法
文章平均质量分 80
松狮MVP
这个作者很懒,什么都没留下…
展开
-
二叉树递归遍历中的return
今天瞄到树递归遍历,就多瞄了两眼,没想到一瞄瞄出了自己的尴尬!直接看代码:#include#includetypedef struct BiTNode{ int data; BiTNode *lChild, *rChild;}BiTNode;typedef struct BiTNode* BiTree;void inOrder(BiTree tree){ if原创 2016-03-02 11:41:33 · 3228 阅读 · 1 评论 -
全排列、判断栈序、火车进出站
1、全排列:void myFullSort(vector data, int k, int end){ int i; if (k > end) { for (i = 0; i <= end; i++) { cout << data[i] << " "; } cout << endl; } else { for (i = k; i <= end; i++)原创 2016-08-10 20:43:27 · 1745 阅读 · 0 评论 -
0-1背包问题、贪心算法、动态规划
0-1背包问题原创 2016-08-29 18:32:10 · 25675 阅读 · 1 评论 -
最长递增子序列(一维、二维)
1、一维:void main01(){ vector data = { 2, 1, 6, 4, 5, 2, 7, 4}; vector len(data.size(), 1); //记录长度的辅助数组 int maxx = len[0]; for (int i = 1; i < data.size(); i++) { int cur = 0; for (原创 2016-08-20 21:25:51 · 1518 阅读 · 0 评论 -
大数运算和大数类
1、首先看一个小问题:整型数组、字符型数组、vector在未初始化的情况下:int main(){ int data[5]; char c[5]; vector v(5); vector v1(5); vector v2; cout << "int[]: "; for (int i = 0; i < 5; i++) { cout << data[i] << "原创 2016-08-09 22:14:36 · 1271 阅读 · 0 评论 -
基本排序算法(1)
1、冒泡排序:冒泡排序的 基本思想是:两两比较相邻的数据,如果反序,则交换;知道没有反序位置。每一趟都会把一个数字放到最终的位置上!时间复杂度O(N^2)。void bubbleSort2(int *data,int length){ bool swapFlag = true; //冒泡排序优化:当某趟过程中未发生交换,则停止整个排序过程 for (int i = 0;原创 2016-07-11 12:59:52 · 1025 阅读 · 0 评论 -
快速排序算法(Partition函数)分析与拓展
零、前言——二分查找 条件:如果数组是有序数组、部分有序数组、或者局部有序数组,在这类数组中进行查找时,二分查找较为常用。时间复杂度O(logN)。二分查找的主要思路:设定两个指针start和end分别指向数组元素的首、尾,然后比较数组中间结点arry[mid]和待查找元素。如果待查找元素小于中间元素,说明待查找元素在数组的前半段,那么将end=mid-1,如果待查找元素大于原创 2016-06-08 10:33:41 · 6181 阅读 · 0 评论 -
基本排序算法(2)
1、堆排序:转(http://www.cnblogs.com/dolphin0520/archive/2011/10/06/2199741.html)举例说明: 给定一个整形数组a[]={16,7,3,20,17,8},对其进行堆排序。 首先根据该数组元素构建一个完全二叉树,得到(1)初始状态: (2)构建堆的过程:原创 2016-07-11 13:19:59 · 650 阅读 · 0 评论 -
十进制字符串转二进制字符串、尾递归
1、不使用字符串操作函数,把一个十进制字符串转换成二进制字符串函数原型:char* Dec2Bin(const char* dec, char* bin, int size){}调用:{ char szBuff[33]; const char* test = "0096"; cout << Dec2Bin(test, szBuff, 33);}具体实现://把原原创 2016-06-27 19:53:14 · 1793 阅读 · 0 评论 -
斐波那契数列、跳台阶、变态跳台阶、矩形覆盖
#include#includeusing namespace std;//9、斐波那契数列class Solution {public: int Fibonacci1(int n) { /* *第一种解法:递归————从上往下计算,重复计算太多,效率太低,不能满足时间要求 */ if (n == 0) return 0;原创 2016-05-07 17:20:27 · 1453 阅读 · 0 评论 -
位运算
以下案例不做问题具体描述,详情参考《剑指Offer》题目10二进制中1的个数、题目40数组中只出现一次的数字、题目47不用加减乘除做加法。案例一:题目10二进制中1的个数//输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。class Solution {public: int NumberOf11(int n) { int count = 0;原创 2016-05-13 21:59:45 · 374 阅读 · 0 评论 -
《剑指Offer》38数字在排序数组中出现的次数
题目描述:统计一个数字在一个数组中出现的次数!分析:排序数组 ====》 二分查找!代码:#include// 查找第一个Kint GetFirstK(int *nums, int length, int k){ if (nums == NULL || length <= 0) { return -1; } int pLeft = 0; int pRight原创 2016-03-14 15:45:28 · 474 阅读 · 0 评论 -
LeetCode001题解
class Solution {public: vector twoSum(vector& nums, int target) { vector temp; unordered_map map; for (int i = 0; i < nums.size(); i++) { //刚开始的map是一个空map,创建的过程是随着查找的过程随之创建的! if (m原创 2016-03-04 10:51:05 · 528 阅读 · 0 评论 -
递归解决全排列问题+详细图解递归执行
问题描述:字符串的排列//输入一个字符串, 按字典序打印出该字符串中字符的所有排列。//例如输入字符串abc, 则打印出由字符a, b, c所能排列出来的所有字符串abc, acb, bac, bca, cab和cba。 //结果请按字母顺序输出。//长度不超过9(可能有字符重复), 字符只包括大小写字母。分析:采用分治法,把一个字符串看成两部分:第一部分是它的原创 2016-06-08 15:59:19 · 6458 阅读 · 0 评论