ACM
喵咖
修炼程序员的九阴真经
展开
-
32位整数的二进制表示中有多少个1
思路1:def countOnes(self, num): # write your code here if num < -2147483648 or num > 2147483647: return None count = 0 while num: if num%2 == 1:原创 2016-03-17 16:24:00 · 4927 阅读 · 0 评论 -
lintcode 旋转数组的最小数字
假设一个旋转排序的数组其起始位置是未知的(比如0 1 2 4 5 6 7 可能变成是4 5 6 7 0 1 2)。你需要找到其中最小的元素。数组中可能存在重复的元素。想法:二分查找变形,最小数字一定是最大值后面的那个。当[11101],[1,0,1,1,1]时没办法判断,顺序查找。 class Solution { public: /** * @param num: the原创 2016-03-18 11:22:02 · 359 阅读 · 0 评论 -
Lintcode 合并两个排序的链表
将两个排序链表合并为一个新的排序链表 样例 给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。 递归实现:"""Definition of ListNodeclass ListNode(object): def __init__(self, val, next=None): self.val原创 2016-03-27 18:56:06 · 397 阅读 · 0 评论 -
lintcode 前序序列和中序序列构建二叉树
根据前序遍历和中序遍历树构造二叉树. 给出中序遍历:[1,2,3]和前序遍历:[2,1,3]. 返回如下的树: 2 / \ 1 3"""Definition of TreeNode:class TreeNode: def __init__(self, val): self.val = val self.left, sel原创 2016-03-21 20:12:59 · 647 阅读 · 2 评论 -
lintcode 求最长公共子串
给出两个字符串,找到最长公共子串,并返回其长度。 这个其实比较简单,因为只要返回最长公共子串的长度就可以了,不用找出他们。PS:如果要是要求返回最长公共子串呢? 动态规划,最优子结构if s[i] == t[j], L[i,j] = L[i-1,j-1]+1 if s[i]!=t[j] L[i,j] = 0, 这里是区别于最长公共子序列的,因为L[i,j] 代表以i结尾的s[i]和以j结尾的原创 2016-03-21 19:21:51 · 461 阅读 · 0 评论 -
Lintcode 用栈实现队列
用栈实现队列 正如标题所述,你需要使用两个栈来实现队列的一些操作。队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素。pop和top方法都应该返回第一个元素的值。开始直观的想法: ` class Queue { public: stack stack1; stack stack2;Queue() { /原创 2016-03-18 19:52:59 · 313 阅读 · 0 评论 -
lintcode 空格替换
设计一种方法,将一个字符串中的所有空格替换成 %20 。你可以假设该字符串有足够的空间来加入新的字符,且你得到的是“真实的”字符长度。你的程序还需要返回被替换后的字符串的长度。 对于字符串”Mr John Smith”, 长度为 13替换空格之后的结果为”Mr%20John%20Smith”class Solution {public: /** * @param string:原创 2016-03-17 20:32:53 · 537 阅读 · 0 评论