`
qiemengdao
  • 浏览: 276493 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论
文章列表
题目: 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。 例如输入“I am a student.”,则输出“student. a am I”。 分析: 由于编写字符串相关代码能够反映程序员的编程能力和编程习惯,与字符串相关的问题一直是程序员笔试、面试题的热门题目。本题也曾多次受到包括微软在内的大量公司的青睐。 由于本题需要翻转句子,我们先颠倒句子中的所有字符。这时,不但翻转了句子中单词的顺序,而且单词内字符也被翻转了。我们再颠倒每个单词内的字符。由于单词内的字符被翻转两次,因此顺序仍然和输入时的顺序保持一 ...
问题 判定一个正整数是否是一个回文数。例如12121是回文数,而1231不是回文数。 解法1:转换成字符串再判断 要判断一个整数是否是回文数,最自然的想法是把整数转换成一个字符串,然后根据回文的对称特性进行判断。数字转换为字符串可以通过itoa函数实现,判断字符串是否为回文字符串代码如下: bool isPalindrome(string &str) { int begin = 0, end = str.length()-1; while (begin < end) { if (str[begin] == str[end]) { ...
问题:从一列数中筛除尽可能少的数使得从左往右看,这些数是从小到大再从大到小的(网易)。 解法:这是双端 LIS 问题,用 DP 的思想可解,目标规划函数 max{ b[i] + c[i] }, 其中 b[i] 为从左到右, 0 ~ i 个数之间满足递增的数字个数; c[i] 为从右到左, n-1 ~ i 个数之间满足递增的数字个数。最后结果为 n - max + 1。其中 DP 的时候,可以维护一个 inc[] 数组表示递增数字序列,inc[i] 为从小到大第 i 大的数字,然后在计算 b[i] c[i] 的时候使用二分查找在 inc[] 中找出区间 inc[0] ~ inc[i-1] ...
问题 给定一个长度为N的数组,找出一个最长的单调自增子序列(不一定连续,但是顺序不能乱)。例如:给定一个长度为6的数组A{5, 6, 7, 1, 2, 8},则其最长的单调递增子序列为{5,6,7,8},长度为4. 解法1:最长公共子序列法 这个问题可以转换为最长公共子序列问题。如例子中的数组A{5,6, 7, 1, 2, 8},则我们排序该数组得到数组A‘{1, 2, 5, 6, 7, 8},然后找出数组A和A’的最长公共子序列即可。显然这里最长公共子序列为{5, 6, 7, 8},也就是原数组A最长递增子序列。最长公共子序列算法在算法导论上有详细讲解,这里简略说下思想。 假定两个 ...
问题 给定一个有序数组,数组元素升序排列,试将该数组转换为一棵平衡二叉搜索树(Balanced Binary Search Tree)。 思路 这个问题用递归很容易解出来。考虑下面一棵二叉搜索树: 这是一棵平衡的二叉搜索树,所谓平衡的定义,就是指二叉树的子树高度之差不能超过1。 如果要从一个有序数组中选择一个元素作为根结点,应该选择哪个元素呢?我们应该选择有序数组的中间元素作为根结点。 选择了中间元素作为根结点并创建后,剩下的元素分为两部分,可以看作是两个数组。这样剩下的元素在根结点左边的作为左子树,右边的作为右子树。、 解法 由上面的思路,我们可以在O(N)的时间内从有序数 ...
由于发到iteye上面格式乱了,需要的朋友可以下载附件。   JAVA泛型编程笔记 1介绍 Java泛型编程是JDK1.5版本后引入的。泛型让编程人员能够使用类型抽象,通常用于集合里面。下面是一个不用泛型例子:   List myIntList=new Li ...
两行命令即可解决ubuntu下pdf文件的乱码问题。 sudo apt-get install poppler-datasudo mv /etc/fonts/conf.d/49-sansserif.conf /etc/fonts/conf.d/49-sansserif.conf.backup
最近出了windows8的消费者预览版,一时手痒就装上了。本来的系统是win7+ubuntu11.10双系统,ubuntu是直接硬盘安装在G盘,引导用的就是默认的grub。装了win8后,覆盖了ubuntu的启动项,所以在网上搜了下资料解决了。步骤如下: 找一张ubuntu的光盘(不限版本,11.04以上的最好,我用的是11.04的盘,因为11.10的盘不知道哪去了),然后改系统从光盘启动,进入临时ubuntu系统,选择“试用ubuntu”。 运行命令:sudo fdisk -l (这里不是数字1,是字母l),找到ubuntu所在分区。由于我的是装在G盘,所以显示为sda8。 运行命令: ...
  Java容器类分析之List、ArrayList、Vector List是接口,声明了各个方法,不多说。且看ArrayList类。 ArrayList类的成员变量有Object[] elementData,int size
算法导论第二章习题答案 2.1插入排序 2.1-1-2.1-2略过。   2.1-3 查找问题: 输入:一列数A={a1, a2, ...an}和值v。 输出:下标i,使得v=A[i],若v不在A中,则输出NIL
  Cassandra中BloomFIlter实现详解 零、BloomFilter原理概述 http://hi.baidu.com/waxiga/blog/item/33ef2ff49b138530bd3109ad.html http://pages.cs.wisc.edu/~cao/papers/summary-cache/node8.html(cassandra中用到了其中的结论,特别注意那个表格) 一、从getFilter()函数入手 1.1第一个
  Cassandra中失效检测原理 一、传统失效检测及其不足 传统失效检测方法 在分布式系统中经常使用心跳(Heartbeat)来检测Server的健康状况,但从理论上来说,心跳无法真正检测对方是否crash,主要困难在于无 法真正区别对方是宕机还是“慢”。传统的检测方法是设定一个超时时间T,只要在T
Cassandra启动过程详解这里的分析从CassandraDaemon.java文件开始。一、配置文件storage-config.xml的读取和log4j的配置文件log4j.property的设置。配置文件的读取和解析都是在 org.apache.cassandra.config.DatabaseDescriptor 类中完成的,这个类的作用非 ...
Cassandra数据模型 几个概念 Cluster:集群,一个逻辑上的cassandra实例包含的节点。一个集群可以包含多个keyspace。 Keyspace:Column Family的名字空间,通常是一个应用一个keyspace。 Column Family:包含多个column,每个column包括name,value, timestamp。Column Family通过Row key引用。 Super Column:可以看作其column包含subcolumn。 Column:包括name,value, timestamp。 Columns Column是数据写入最小单元。 ...
【Joseph问题描述】 n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。求胜利者的编号。 【求解思路】 1.非递归算法 我们知道第一个人(编号一定是m%n-1) 出列之后,剩下的n-1个人组成了一个新的约瑟夫环(以编号为k=m%n的人开始): k k+1 k+2 ... n-2, n-1, 0, 1, 2, ... k-2 并且从k开始报0。 现在我们把他们的编号做一下转换: k --> 0 k+1 --> 1 k+2 --> 2 ... ... k-2 --> n-2 k-1 --> n-1 变 ...
Global site tag (gtag.js) - Google Analytics