ACM题
tang20120235
这个作者很懒,什么都没留下…
展开
-
开荒新系列之Leetcode: 003-Delete Node in a Linked List
开荒Leetcode: NO.003 Delete Node in a Linked List最近晚上决定睡得比较早,于是更新就慢下来了。DFS和BFS还有递归写法,速度更快一些,留坑待填。题目大意: 写个函数用于删除单链表中的某一个结点n, 输入参数为该结点n, 并不能得到头基本思路: 直觉上就是三步, 1. 复制下一节点值 2. 指向下下节点 3. 删除下一节点感觉这原创 2015-12-28 00:25:24 · 415 阅读 · 0 评论 -
开荒新系列之LeetCode: 002-Maximum Depth of Binary Tree
总结讨论在不看上一篇文章的前提下,回忆总结一下上次工作,看看到目前为止还记得多少:要多手写一些测试数据不止一种方法实现,寻找最简单的方法python is 比 == 要快一点点Maximum Depth of Binary Tree题目大意:找二叉树的最大深度。基本思路:除了DFS(Depth-Fisrt-Search),还有其它办法吗?直觉上并没有了呃,但是仔细想想,只要是能够遍历二叉树的原创 2015-12-26 10:33:21 · 426 阅读 · 0 评论 -
开荒新系列之LeetCode: 001-Nim Num
开荒新系列之LeetCode昨天和师兄聊天,他表示现在工作不太好找,要找得刷leetcode,大概刷完leetcode就能找到工作了。本人一向头脑简单,喜欢开荒,今天开始刷,争取每晚一道题。先按最简单的排序,从第一道开始吧!第一题 Nim Num题目大意: 两个棋手对奕,一共有N个棋子(原文是heap),每人每次可拿1-3个棋子,谁拿走最后的1-3个棋子视为输棋。我扮演先手的棋手,寻找给出不同N原创 2015-12-25 00:54:48 · 615 阅读 · 0 评论 -
LeetCode: 009-Lowest Common Ancestor of a Binary Search Tree
Lowest Common Ancestor of a Binary Search Tree找出二叉树中某两个节点的最近的祖先. 可以是节点本身.思路一个快速的解决方案 - 首先依赖搜索算法构建整个二叉树的父子关系列表 - 回溯寻找父亲关系图, 需要检索关系列表, 所以考虑用dict会快一些我的解法class Solution(object): def lowestCommonAnc原创 2016-01-08 14:34:24 · 344 阅读 · 0 评论 -
LeetCode: 013-Climbing Stairs
Climbing Stairs题目大意是指,用1,2排列,使其和为n,有多少种排法。基本思路大概就是对不同数量的1,挑选1的位置。 挑选的话,就需要求组合数, 求组合数,就需要阶乘?!阶乘就会特别慢,基本方案class Solution(object): def pmt(self, a, all): # 阶乘 f = lambda x: x and x *原创 2016-01-08 00:46:58 · 369 阅读 · 0 评论 -
LeetCode: 012- Reverse Linked List
Reverse Linked List最基本的链表操作, 学习后插法和前插法 http://iamtrask.github.io/2015/11/15/anyone-can-code-lstm/我的解法# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):#原创 2016-01-07 00:37:31 · 379 阅读 · 0 评论 -
LeetCode: 011 - Roman to Integer
Roman to Integer比较喜欢用到字符串处理的题 我的解法class Solution(object): roman = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000} def turn(self, s): roman = self.roman if len(s) == 1:原创 2016-01-06 01:22:02 · 354 阅读 · 0 评论 -
LeetCode: 010 - Number of 1 Bits
Number of 1 Bits看到题目的第一反应,是去找Python标准库中的转换函数, 果然有一个bin的函数,能将数值转换为字符实际上,可以考虑用等长数值1以及移位操作来获得最后结果。 这样会省去创建字符串的时间, 在C下会快很多class Solution(object): def hammingWeight(self, n): """ :ty原创 2016-01-06 00:36:44 · 342 阅读 · 0 评论 -
LeetCode: 008-Contains Duplicate
Contains Duplicate恶补一点简单题。 如果列表中有两个重复数据,返回True,反之,返回False基本思路最简单的方法是调用sorted函数了,nlog(n)nlog(n)级别。 感觉我在平时写脚本的时候,这个问题碰到得相当多,需要仔细学习一下。基本解法当然是用sorted啦class Solution(object): def containsDuplicate(sel原创 2015-12-30 23:46:45 · 355 阅读 · 0 评论 -
LeetCode: 007-Excel Sheet Column Number
LeetCode: 007-Excel Sheet Column Number公历年末要到啦,可以休假啦 ~ 计算Excel的列数 & 字符处理实质上是26进制转换+字符串处理,了解ascii码这道题非常简单。我的解法尽管速度不快。。。确实该好好想想怎么样提高代码速度了。。。class Solution(object): def titleToNumber(self, s):原创 2015-12-30 23:23:57 · 353 阅读 · 0 评论 -
开荒新系列之LeetCode: 006-Valid Anagram
题前刚写了一个二叉树生成,就没有二叉树的题目可以做了哎。。题目大意Valid Anagram是有效字谜的意思(Valid -> 有效, Anagram -> 字谜)。 输入为两个字符串,判断他们是不是同一个字母表的组合(假定全部为小写字母)。思路偷偷看了一眼Hint中的HashTable,再加有一个Tag关于如何把算法推广到unicode字符串上。很容易想到一个基本解法,统计计算每个字符的数目,但原创 2015-12-29 18:55:08 · 333 阅读 · 0 评论 -
测试用二叉树生成代码
在005里给的任务能用就行啦。 尝试以后加入单元测试模块class TreeNode(object): def __init__(self, val): self.val = val self.left = None self.right= Nonedef generateTree(dList = []): if dList == [原创 2015-12-29 17:11:59 · 726 阅读 · 0 评论 -
开荒新系列之LeetCode: 004-Same Tree
开荒LeetCode系列: NO.004 Same Tree在广图,连刷两道题好了。题目大意比较两个二叉树的异同,只有结构完全相同,且对应结点的值也相同的二叉树,才是完全一致的。基本思路啊,我的DFS和BFS,你们又要出现啦。 到底用哪种呢?感觉更偏好于DFS一些。因为大部分二叉树在构造的时候都会偏向于平衡结构,因而BFS在抵达较深层次的时候,会使其任务队列过于庞大(最多需要2^h的大小,h为深度原创 2015-12-28 00:26:59 · 1325 阅读 · 0 评论 -
开荒新系列之LeetCode: 005-Invert Binary Tree
题前老实说,这道放五天前我是不会写的。 前两天写了BFS后,这道题就变得容易了。 此题也是由著名的Google 白板面试事件一下火了。 作为非大牛,准备面试还是挺重要的。题目大意将树对称。 比如[1,2,3,4,5,6] -> [1,3,2,null,6,5,4] 懒得画二叉树了。。。 确实应该写一个二叉树生成函数了,其实没几行。好懒直觉思路当然是BFS+SWAP啦我的解法# Defin原创 2015-12-28 23:25:18 · 322 阅读 · 0 评论 -
大根堆 - max heapify
大根堆调整(递归形式)def heapify(dList, root, boundary): child = root * 2 + 1 large = root if child <= boundary and dList[large] <= dList[child]: large = child if child+1 <= boundary and原创 2016-04-18 20:55:47 · 916 阅读 · 0 评论