last

数据结构与算法题目集(中文)6-9 二叉树的遍历 (25分)

烂漫一生 提交于 2020-02-03 01:04:39
1.题目链接 https://pintia.cn/problem-sets/15/problems/732 2.题目分析 1.void InorderTraversal( BinTree BT );中序遍历,即“根,左,右” 先输出根节点,再递归进入左节点,之后再递归进入右节点 2.void PreorderTraversal( BinTree BT ); 先序遍历,即“左,跟,右”先递归进入左节点,之后返回一层输出根节点,再递归进入右节点 3.void PostorderTraversal( BinTree BT );后序遍历,即“左,右,跟”先不断递归进入左节点,再分别递归入右节点,之后输出根节点 4.void LevelorderTraversal( BinTree BT );层序遍历,即一层一层从上往下从左往右输出节点 层序遍历具体的实现方法: 声明一个binTree[100]数组,使用head、last两个指针; 首先将根节点输出,并将last指针++,接着将根节点的左、右节点放到数组中进行缓存,同时使last指针++; 下一次再将左节点输出,同时将左节点的左、右节点存入数组,last++,右节点同理; 最后当head与last值相等的时候,表示到达最右下方节点,输出结束。 3.代码 void InorderTraversal( BinTree BT ) { if(BT=

WEB渗透 - SQL注入(持续更新)

有些话、适合烂在心里 提交于 2020-02-02 02:40:55
SQL注入 按变量类型分:数字型和字符型 按HTTP提交方式分:POST注入、GET注入和Cookie注入 按注入方式分:布尔注入、联合注入、多语句注入、报错注入、延时注入、内联注入 按数据库类型分: sql:oracle、mysql、mssql、access、sqlite、postgersql nosql:mongodb、redis 布尔型 0x01 检测有无注入 1' and '1'='1 1' and '1'='2 简化版 1' and '1 1' and '0 猜测服务器端查询语句是:select xx from table where id='1' 0x02 检测表的列数 ' order by 10 --+ 猜测服务器端查询语句是:select xx from table where id=' ' order by 10 --' 0x03 检测显示信息位 ' union select 1,2 -- union联合查询,同时显示多个select查询结果 0x04 显示信息位替换成查询语句 ' union select user(),@@datadir -- 从元数据表information_schema查询信息 0x001 查库名 ' union select schema_name from information_schema.schemata -- 0x002

索引与优化

≡放荡痞女 提交于 2020-02-02 02:02:19
参考: http://blog.csdn.net/xluren/article/details/32746183 http://www.cnblogs.com/hustcat/archive/2009/10/28/1591648.html 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。对于没有索引的表,单表查询可能几十万数据就是瓶颈,而通常大型网站单日就可能会产生几十万甚至几百万的数据,没有索引查询会变的非常缓慢。还是以WordPress来说,其多个数据表都会对经常被查询的字段添加索引,比如wp_comments表中针对5个字段设计了BTREE索引。 一个简单的对比测试 以我去年测试的数据作为一个简单示例,20多条数据源随机生成200万条数据,平均每条数据源都重复大概10万次,表结构比较简单,仅包含一个自增ID,一个char类型,一个text类型和一个int类型,单表2G大小,使用MyIASM引擎。开始测试未添加任何索引。 执行下面的SQL语句: 1 mysql> SELECT id,FROM_UNIXTIME( time ) FROM article WHERE a.title= '测试标题' 查询需要的时间非常恐怖的,如果加上联合查询和其他一些约束条件,数据库会疯狂的消耗内存

数据流块基础

限于喜欢 提交于 2020-02-01 11:05:04
>>返回《C# 并发编程》 1. 简介 2. 链接数据流块 3. 传递出错信息 4. 断开链接 5. 限制流量 6. 数据流块的并行处理 7. 创建自定义数据流块 1. 简介 TPL 数据流(dataflow)库的功能很强大,可用来创建 网格 (mesh)和 管道 (pipleline), 并通过它们以 异步方式 发送数据。 主要命名空间: System.Threading.Tasks.Dataflow 2. 链接数据流块 创建 网格 时,需要把数据流块互相 连接 起来。 public static void LinkBlockRun() { System.Console.WriteLine("Building Block link."); TransformBlock<int, int> multiplyBlock = new TransformBlock<int, int>(item => { System.Console.WriteLine("first block."); Thread.Sleep(500); return item * 2; }); var subtractBlock = new TransformBlock<int, int>(item => { System.Console.WriteLine("last block."); Thread.Sleep

增强版唐奇安通道策略

妖精的绣舞 提交于 2020-02-01 06:02:13
前言 提起唐奇安通道,很多人都会联想到海龟交易法则,这也许是有史以来最成功的交易员培训课程。海龟们用神奇的交易系统赚了成百上千万美元,直到1983年海龟交易法则解密,人们才发现这个神奇的交易系统用的是修正版的唐奇安通道。但时过境迁,现在的市场环境已经发生了很大的变化,这导致唐奇安通道策略变得低效,那么今天我们试着改进,看看增强版的唐奇安通道策略效果如何。 唐奇安通道简介 原始的唐奇安通道(Donchianchannel)规则其实很简单,它先设置一条阻力线和一条支撑线,阻力线由过去N天的最高价的最大值形成;支撑线由过去N天的最低价的最小值形成。 唐奇安上阻力线:由过去N天的当日最高价的最大值 唐奇安下支撑线:由过去N天的当日最低价的最小值 如上图中唐奇安通道阻力线和支撑线,在外观上与布林带比较相像,只不过布林带的波动比较灵敏,而唐奇安通道则是直上直下。唐奇安通道可以衡量市场的波动性,一般来说通道宽度越宽,市场的波动就越大,通道宽度越窄,市场的波动性也就越小。 原始策略逻辑 除了具有衡量市场波动率这个功能外,它的主要作用是帮助交易者确定买入和卖出时机。因为唐奇安通道是根据最高价和最低价计算出来的,通道的宽窄又随着价格的变化自动调整,所以大多数时候价格是在通道之内运行,很少突破其上下轨道的。 也就是说,价格并不会随意突破阻力线和支撑线,但如果有效突破,那就预示着大行情可能将会出现

oracle数据库操作---2 基本 SELECT 语句 查询数据(单表中的数据查询)

蓝咒 提交于 2020-02-01 04:18:27
基本 SELECT 语句 查询数据(单表中的数据查询) 具体语句展示 需要注意的是在这里我使用的是PLSQL连接到oracle数据库然后登录hr用户后,在SQL语句窗口中运行的代码,hr用户默认会有很多张表可供练习。 选择全部列 select * from employees ; 选择特定的列 select first_name , last_name from employees ; 注意 SQL 语言大小写不敏感。 SQL 可以写在一行或者多行 关键字不能被缩写也不能分行 各子句一般要分行写。 使用缩进提高语句的可读性。 算术运算符在SQL中的使用 数字和日期使用的算术运算符 (+ - * /) 使用数学运算符 运算时也拥有优先级 乘除的优先级高于加减。 同一优先级运算符从左向右执行。 括号内的运算先执行。 select first_name , last_name , 2 * ( salary + 100 ) from employees ; 定义空值 空值是无效的,未指定的,未知的或不可预知的值 空值不是空格或者0。 select first_name , last_name , salary , commission_pct , ( salary + salary * commission_pct ) * 12 from employees ; 这里你会发现

无聊之作-LeetCode Solve the Equation

谁都会走 提交于 2020-02-01 01:40:11
Solve a given equation and return the value of x in the form of string "x=#value". The equation contains only '+', '-' operation, the variable x and its coefficient. If there is no solution for the equation, return "No solution". If there are infinite solutions for the equation, return "Infinite solutions". If there is exactly one solution for the equation, we ensure that the value of x is an integer. Example 1: Input: "x+5-3+x=6+x-2" Output: "x=2" Example 2: Input: "x=x" Output: "Infinite solutions" Example 3: Input: "2x=x" Output: "x=0" Example 4: Input: "2x+3x-6x=x+2" Output: "x=-1" Example

[python笔记]7.函数

浪子不回头ぞ 提交于 2020-01-31 23:36:35
一.定义函数 1)def 使用关键字def定义函数,后面跟函数名,括号中为参数,以冒号结尾,后面的缩进行为函数体, eg: def greeter_user ( ) : print ( "hello world" ) greeter_user ( ) 输出: hello world 二.给函数传递参数 1)位置实参 eg1: def great_user ( user_name ) : '''显示其简单的问候语''' print ( "Hello, " + user_name . title ( ) + "!" ) great_user ( 'jesse' ) 输出: Hello , Jesse! 其中user_name作为形式参数,jesse作为实际参数传给great_user函数保存在user_name中 eg2: def describe_pet ( animal_type , pet_name ) : print ( "\nI have a " + animal_type + "." ) print ( "My " + animal_type + "'s name is " + pet_name . title ( ) + "." ) describe_pet ( 'hamster' , 'harry' ) describe_pet ( 'dog' , 'willie' )

习题:changing array (贪心)

不问归期 提交于 2020-01-31 18:47:58
题目 传送门 思路 正难则反,全集是很好求的,即为 \(\frac{n*(n+1)}{2}\) ,想要异或不为0的尽可能的多,即异或为0的尽可能的少 对于所有的区间 \(l,r\) ,可以用前缀和 \(s\) 来表示, \(s_r ~xor~s_{l-1}\) , 之后我们考虑 \(xor\) 的性质,只有当两个数相同时,异或值才为0 我们设 \(t_k\) 表示有多少个前缀和为 \(k\) 对于第 \(i\) 个数,我们贪心的考虑就好了,看是不异或少,还是异或之后少就行了 贪心的正确性显然 \(t_0\) 初始值应为1,因为你还要算他本身的贡献 代码 #include<iostream> #include<map> using namespace std; int n,k; int a[200005]; map<int,int> t; int _last; long long ans; int main() { ios::sync_with_stdio(false); cin>>n>>k; k=(1<<k)-1; ans=1ll*(n+1)*n/2; for(int i=1;i<=n;i++) cin>>a[i]; t[0]=1; for(int i=1;i<=n;i++) { int u=a[i]^_last,v=a[i]^k^_last; if(t[u]<t[v]) {

Leetcode34. Find First and Last Position of Element in Sorted Array

陌路散爱 提交于 2020-01-31 12:49:12
Leetcode34. Find First and Last Position of Element in Sorted Array Given an array of integers nums sorted in ascending order, find thestarting and ending position of a given target value Your algorithm’s runtime complexity must be in the order of O(log n). If the target is not found in the array, return [-1, -1]. Example 1: Input: nums = [5,7,7,8,8,10], target = 8 Output: [3,4] Example 2: Input: nums = [5,7,7,8,8,10], target = 6 Output: [-1,-1] 解法一 线性扫描 对 target 检查每一个下标,一定能得到正确答案。时间复杂度 O ( N ) O(N) O ( N ) ,不符合题意。 解法二 两次二分查找 普通二分查找 int binarySearch ( int [ ] nums , int target ) { int left = 0