自定义博客皮肤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的博客

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

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

原创 计算几何问题汇总--点与线的位置关系

点与点之间, 线与线之间,点与线之间的位置关系是一类非常重要的问题。它不仅是平面几何学的基石,也常常应用于LBS(Location Based Service),社交网络,以及数据库查询等领域。本文中,我将给出判断这些关系的相关算法,作为参考。需要说明的是,我给出的这些问题的解法,都是建立在二维平面空间之上。有关多维空间的位置关系,大家可以仿照二维空间中问题的思路,做相应的拓展。语言上,我用的当然还

2016-09-20 08:53:45 14791

原创 lintcode - 堆化

题目描述:给出一个整数数组,堆化操作就是把它变成一个最小堆数组。对于堆数组A,A[0]是堆的根,并对于每个A[i],A [i * 2 + 1]是A[i]的左儿子并且A[i * 2 + 2]是A[i]的右儿子。样例:给出 [3,2,1,4,5],返回[1,2,3,4,5] 或者任何一个合法的堆数组有关堆数组的实现,我在另一篇博文中有详细的论述:堆的实现与优先队列。所以,讲解此处略,只

2016-09-17 18:39:53 867

原创 lintcode - 有效的括号序列

题目描述:给定一个字符串所表示的括号序列,包含以下字符: '(', ')', '{', '}', '[' and ']', 判定是否是有效的括号序列。样例:括号必须依照 "()" 顺序表示, "()[]{}" 是有效的括号,但 "([)]"则是无效的括号。其实题目的意思没有表达的很清楚,所谓“有效的”括号序列,指的是“非交错”的括号序列,也就是说,只有两种可能性是合法的:1.

2016-09-09 15:24:46 2173

原创 lintcode - 用栈模拟汉诺塔问题

题目描述:在经典的汉诺塔问题中,有 3 个塔和 N 个可用来堆砌成塔的不同大小的盘子。要求盘子必须按照从小到大的顺序从上往下堆 (如,任意一个盘子,其必须堆在比它大的盘子上面)。同时,你必须满足以下限制条件:(1) 每次只能移动一个盘子。(2) 每个盘子从堆的顶部被移动后,只能置放于下一个堆中。(3) 每个盘子只能放在比它大的盘子上面。请写一段程序,实现将第一个

2016-09-09 11:21:20 1773

原创 lintcode - 买卖股票的最佳时机 III

题目描述:假设你有一个数组,它的第i个元素是一支给定的股票在第i天的价格。设计一个算法来找到最大的利润。你最多可以完成两笔交易。样例:给出一个样例数组 [4,4,6,1,1,4,2,5], 返回 6之前,关于“买卖股票”的故事,我们已经讲过两集:买卖股票的最佳时机,买卖股票的最佳时机 II。我默认你看这篇文章的时候,已经对前面两道题的方法彻底明白了。前面的第一道题关键是只能进行

2016-09-08 09:57:10 1883

原创 lintcode - 最接近的三数之和

题目描述:给一个包含 n 个整数的数组 S, 找到和与给定整数 target 最接近的三元组,返回这三个数的和。样例:例如 S = [-1, 2, 1, -4] and target = 1. 和最接近 1 的三元组是 -1 + 2 + 1 = 2.和之前“三数之和”的套路是一致的(详见:点击打开链接)。简单来说,就是先控制一个位置固定,然后对其余两个位置“左右夹逼”,再将这个固定

2016-09-06 14:39:26 2482

原创 lintcode - 平面列表

题目描述:给定一个列表,该列表中的每个要素要么是个列表,要么是整数。将其变成一个只包含整数的简单列表。样例:给定 [1,2,[1,2]],返回 [1,2,1,2]。给定 [4,[3,[2,[1]]]],返回 [4,3,2,1]。用递归的思路很容易解决,之前我已经说过太多类似的问题,不再赘述。需要注意的一点是递归“触底”的条件是当这个给出的列表本身是整数。直接给出代码:class

2016-09-05 16:45:53 1912

原创 lintcode - 克隆二叉树

题目描述:深度复制一个二叉树。给定一个二叉树,返回一个他的克隆品 。题目把意思已经说得很清楚了,所以不再举例了。非常简单,用一个简单的递归就可以解决,这个思路有点类似于二叉树的前序遍历的递归算法(详见:二叉树的遍历)因为太简单,所以直接给出代码:"""Definition of TreeNode:class TreeNode: def __init__(

2016-09-05 08:46:31 2422

原创 lintcode - 用递归打印数字

题目描述:用递归的方法找到从1到最大的N位整数。样例:给出 N = 1, 返回[1,2,3,4,5,6,7,8,9].给出 N = 2, 返回[1,2,3,4,5,6,7,8,9,10,11,...,99].题目要求用递归的方法。那就先来看一下,当N = i 和 N = i + 1时,返回的这个结果列表时怎样转化的。找到“升级”的方式,是递归算法最难的一环。

2016-09-01 10:33:29 1265

空空如也

空空如也

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

TA关注的人

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