自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

guoziqing506的博客

记录学习点滴,享受算法乐趣

  • 博客(21)
  • 收藏
  • 关注

原创 线段树的修改

题目描述:对于一棵 最大线段树, 每个节点包含一个额外的 max 属性,用于存储该节点所代表区间的最大值。设计一个 modify 的方法,接受三个参数 root、 index 和 value。该方法将 root 为跟的线段树中 [start, end] = [index, index] 的节点修改为了新的 value ,并确保在修改后,线段树的每个节点的 max 属性仍然具有正确的值。

2016-07-31 11:58:29 585

原创 线段树查询 II

题目描述:对于一个数组,我们可以对其建立一棵 线段树, 每个结点存储一个额外的值 count 来代表这个结点所指代的数组区间内的元素个数. (数组中并不一定每个位置上都有元素) 实现一个 query 的方法,该方法接受三个参数 root, start 和 end, 分别代表线段树的根节点和需要查询的区间,找到数组中在区间[start, end]内的元素个数。样例:对于数组 [0

2016-07-31 09:37:49 765

原创 线段树的查询

题目描述:对于一个有n个数的整数数组,在对应的线段树中, 根节点所代表的区间为0-n-1, 每个节点有一个额外的属性max,值为该节点所代表的数组区间start到end内的最大值。为SegmentTree设计一个 query 的方法,接受3个参数root, start和end,线段树root所代表的数组中子区间[start, end]内的最大值。样例:对于数组 [1, 4, 2,

2016-07-30 19:59:18 1381

原创 线段树的构造 II

题目描述:线段树是一棵二叉树,他的每个节点包含了两个额外的属性start和end用于表示该节点所代表的区间。start和end都是整数,并按照如下的方式赋值:根节点的 start 和 end 由 build 方法所给出。对于节点 A 的左儿子,有 start=A.left, end=(A.left + A.right) / 2。对于节点 A 的右儿子,有 start=(A.left +

2016-07-30 10:51:49 642

原创 线段树的构造

题目描述:线段树是一棵二叉树,他的每个节点包含了两个额外的属性start和end用于表示该节点所代表的区间。start和end都是整数,并按照如下的方式赋值:根节点的 start 和 end 由 build 方法所给出。对于节点 A 的左儿子,有 start=A.left, end=(A.left + A.right) / 2。对于节点 A 的右儿子,有 start=(A.left +

2016-07-29 16:44:12 783

原创 Python--列表解析

列表解析的出现,对于Python来说,绝对算是一种革命性的变化。我们可以通过一种极其简洁的列表解析的式子,完成符合某种规律的列表的构建,或者替代函数式编程中 map(), filter() 这些函数的作用(函数式编程以后我会再做总结),实现对一个序列的筛选,依次计算等功能。先来看看列表解析的语法:[expr for iter_val in iterable] 简单说,就是对于一个可迭代的对象

2016-07-27 13:08:15 2469 2

原创 Python--元组

元组是一种和列表非常相近的容器,它由圆括号括起来的一系列元素构成,元素中间也是用 “,” 隔开,所以,从表面上看,它和列表“长的”几乎是一模一样的(从形式上看,只是括元素的括号不同罢了)。性质上讲,元组和列表也有很多相同之处,所以,我不打算用很详尽的篇幅来讲解元组,那些元组和列表相同的地方,我会省略,如果有读者不清楚,请翻看我的上一篇博文(Python–列表)我会着重说明元组与列表的不同之处,其实

2016-07-27 09:19:04 1314

原创 Python--列表

之前,我们已经探讨过字符串的相关操作了([Python--字符串](http://blog.csdn.net/guoziqing506/article/details/51945838))。列表和字符串相同,他也是一种序列,所谓序列,就是按照一定顺序存储对象的容器,容器中的每个序列都被默认存在一个下标(索引)与之对应。从这个角度讲,列表当然和字符串在序列的性质方面是有相同之处的。不过他们的不同之处更多,比如在存储的方

2016-07-21 21:33:40 2544

原创 移动零

题目描述:给一个数组 nums 写一个函数将 0 移动到数组的最后面,非零元素保持原数组的顺序样例:给出 nums = [0, 1, 0, 3, 12], 调用函数之后, nums = [1, 3, 12, 0, 0].其实,仅就实现这个功能来说,我们当然可以选择先把所有的0统计出来,然后删除这些0,再在数组后面添加这些0.不过,这并不是这道题的本意,此题的本意是要我们熟悉数组

2016-07-21 10:09:47 2223

原创 Python--字符串

字符串类型在Python中是十分重要的类型,他一般用引号中间添加字符的形式表达,不同于其他语言的是,Python中双引号(”“)与单引号(”)是不予区分的。都可以用来表示字符串创建、赋值和访问1. 两种创建方式(1) 直接赋值s = "abcdef"(2) 通过str()函数str()函数的作用,相当于是通过传入的参数,生成一个string型的对象,这个传入的参数可能是整型

2016-07-19 10:15:06 2895 2

原创 合并区间

题目描述:给出若干闭合区间,合并所有重叠的部分。样例:给出的区间列表 => 合并后的区间列表:[                     [  [1, 3],               [1, 6],  [2, 6],      =>       [8, 10],  [8, 10],              [15, 18]  [15, 18]

2016-07-18 15:52:47 1181

原创 数字组合 II

题目描述:给出一组候选数字(C)和目标数字(T),找出C中所有的组合,使组合中数字的和为T。C中每个数字在每个组合中只能使用一次。样例:给出一个例子,候选数字集合为[10,1,6,7,2,1,5] 和目标数字 8 , 解集为:[[1,7],[1,2,5],[2,6],[1,1,6]]跟上一题“数字组合”(详见:点击打开链接)其实是一样的,只不过此时不允许列表中的数字被重复利用了。那

2016-07-18 13:45:25 1115

原创 数字组合

题目描述:给出一组候选数字(C)和目标数字(T),找到C中所有的组合,使找出的数字和为T。C中的数字可以无限制重复被选取。例如,给出候选数组[2,3,6,7]和目标数字7,所求的解为:[7],[2,2,3]样例:给出候选数组[2,3,6,7]和目标数字7,返回 [[7],[2,2,3]]跟问题“组合”(详见:点击打开链接)从本质上讲是一样的,都是“深搜” + “递归”的方法。只不过

2016-07-15 15:59:48 1447

原创 电话号码的字母组合

题目描述:给一个数字字符串,每个数字代表一个字母,请返回其所有可能的字母组合。下图的手机按键图,就表示了每个数字可以代表的字母。与上一题“组合”(详见:点击打开链接)的思路是一致的,用的还是深搜 + 递归这样的模式。首先,可以先构造一个数字与字母相对应的数组,比如,可以写成这个形式:num_alp_table = [" ", "", "abc", "def", "ghi

2016-07-11 21:15:54 5078 3

原创 组合

题目描述:给出两个整数n和k,返回从1......n中选出的k个数的组合。样例:例如 n = 4 且 k = 2,返回的解为:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4]]深搜+递归的思路。与之前求取“二叉树的所有路径”如出一辙(详见:点击打开链接)。可以这样理解:拿样例来说:1. 先将1放入组合:[1] 那么剩下的数只能在2, 3, 4中选择,因为

2016-07-10 21:32:51 1770

原创 上一个排列

题目描述:给定一个整数数组来表示排列,找出其上一个排列。样例:给出排列[1,3,2,3],其上一个排列是[1,2,3,3];给出排列[1,2,3,4],其上一个排列是[4,3,2,1]方法与之前的“下一个排列”问题类似(详见:点击打开链接),如果上一个问题没有搞明白,请先移步给出的链接。在讲解这个问题之前,我会假设你已经完全明白“字典序”,“高位”,“低位”这些概念。好

2016-07-10 11:41:22 1354

原创 Python--内存管理

1. 变量定义大多数的编译型语言,在使用变量前,都需要先对变量进行声明。但是Python不同,变量在第一次被赋值时也就自动声明了。和其他语言一样,变量只有被创建和赋值后,才能使用。比如:a = 4b = "string"a, b是变量名。一旦被赋值,就可以通过变量名访问。2. 动态类型Python中变量的类型也无需被声明,解释器会根据赋值运算符右边的值来决定变量的类型。比如,在C++中,我们经常写

2016-07-05 20:33:06 1154

原创 Python--操作符

我把常用的Python操作符分为以下4类:标准算数操作符;比较操作符;逻辑操作符;位运算操作符。除了最后一类一般只在位运算中使用,应用面不算很广,其他三类则基本涵盖了整个Python语言的基本应用。1. 标准算数操作符:(1)  ~~+   ~~ -   ~~ *   ~~ /:加减乘除,不用多做解释了。需要注意的是,+ 号和 * 号在列表的相关运算当中,还有其他含义,这一点,我

2016-07-04 21:42:55 3465

原创 带重复元素的排列

题目描述:给出一个具有重复数字的列表,找出列表所有不同的排列。样例:给出列表 [1,2,2],不同的排列有:[  [1,2,2],  [2,1,2],  [2,2,1]]与不带重复元素求取全排列的思路是一样的(详见:点击打开链接),当时我们先讲了递归的思路,简单来说是这样的:1. 先抽取一个元素出来,对剩下的元素做全排列2. 将抽取出的元素依次插入剩

2016-07-03 13:03:20 3663

原创 第k个排列

题目描述:给定 n 和 k,求123..n组成的排列中的第 k 个排列。样例:对于 n = 3, 所有的排列如下:123132213231312321如果 k = 4, 第4个排列为,231.关于字典序和排列的概念请翻阅我之前的博文(详见:点击打开链接),由这些概念可知,如果一个排列是第k个排列,那么一定满足他之前的k - 1个排列是按字典序排列好的

2016-07-03 10:42:56 1607

原创 全排列

题目描述:给定一个数字列表,返回其所有可能的排列。样例:给出一个列表[1,2,3],其全排列为:[  [1,2,3],  [1,3,2],  [2,1,3],  [2,3,1],  [3,1,2],  [3,2,1]]排列的规则应该是这样的,假设由n个数字组成,那么,我们先拿出第一个数,设为a,然后让其他的数字做全排列,排列出来的结果中,在每个结果的第一

2016-07-01 20:57:50 2112

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除