- 博客(7)
- 收藏
- 关注
原创 线段树
线段树 线段树是一棵二叉树,每个节点记录相应区间的信息 维护最大值 解决的问题 单点更新,求区间最值,区间和 成段更新,区间求和 二维空间覆盖问题(求覆盖面积,周长) 实现参考NOTONLYSUCCESS hdu1166 敌兵布阵 #include <stdio.h> //maxn是题目给的最大区间,而节点数要开4倍,确切的来说节点数要开大于ma
2018-10-14 23:01:58
100
原创 前序中序后序遍历递归非递归实现
前序遍历 根-左儿子-右儿子 /** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * ...
2018-08-10 01:39:29
182
原创 排序
快排 快排基础是在一个序列中选一个基准数x,把小于x的数放左边,其余放右边。然后分别对左右两边序列做该操作,直到序列是有序的(序列只有一个数时肯定有序)。 void quick_sort(int l,int r) { if (l >= r) return; int i=l,j=r, key = a[l]; while (i < j) { ...
2018-08-10 00:15:34
113
原创 斐波那契类
斐波那契数列 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39 题解 斐波那契数列公式 F(n)={n,F(n−1)+F(n−2),n=0,1n>1F(n)={n,n=0,1F(n−1)+F(n−2),n>1F(n)=\begin{cases} n, & n=0,1\\ F(n-1) + F(...
2018-08-09 01:28:09
214
原创 旋转数组中最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 ##题解 顺序查找O(log(n)),效率快的用二分(变形二分)。 旋转数组有两非减序列组成,非减序列交界的右侧为最...
2018-08-09 00:47:56
79
原创 剑指offer
#二维数组查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 ##题解:主要在从右上(或者左下)找,这样可以一次排除一行或者一列,而左上和右下不行 class Solution { public: bool Find(int targe...
2018-08-09 00:16:45
77
原创 poj2287 田忌赛马
贪心1.田最慢的马和齐最慢的马比,赢则+12.田最快的马和齐最快的马比,赢则+13.用田最慢的马和齐最快的马比,输则-1。注意:打平的情况最后在判断田最快=齐最快,田最慢=齐最慢的情况时想当然的打平了。实际上我按第三种情况处理,所以必须把田最慢和齐最快比一下#include <iostream> #include <stdio.h> #include <stdlib....
2018-07-09 02:00:18
160
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人