- 浏览: 265771 次
- 性别:
- 来自: 杭州
博客专栏
-
LeetCode题解
浏览量:53671
最新评论
-
Cwind:
scchenzhipan 写道我必须要赞一下 看来亲踩了一样的 ...
IDEA设置JDK无效问题解决方案 -
scchenzhipan:
我必须要赞一下
IDEA设置JDK无效问题解决方案 -
Cwind:
faradayroger 写道class StringBuff ...
StringBuffer与StringBuilder的线程安全性验证 -
faradayroger:
class StringBufferTaskThread这个类 ...
StringBuffer与StringBuilder的线程安全性验证 -
Cwind:
java-lxm 写道 没看懂补充了一点示例程序和输出结果说明 ...
StringBuffer与StringBuilder的线程安全性验证
文章列表
原题链接:#21 Merge Two Sorted Lists
要求:
合并两个已排序的单向链表,将合并后的结果作为一个链表返回。
ListNode定义:
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
难度:简单
分析:
由于两个链表均已排好序,令两个指针指向两个链表的头节点,每次取出两个指针中值较小的一个节点,然后将指针后移。当一个链表遍历完以后,将另一个链表的剩余部分拼接到结果链表的尾部即可。
解决方案:
...
原题链接:#10 Regular Expression Matching
要求:
实现正则表达式匹配,支持'.'和'*'。
'.'匹配任意单字符。
'*'匹配任何0个或多个之前元素。
匹配应当覆盖整个输入字符串,而不仅仅是子串。
函数原型:
boolean isMatch( ...
原题链接:#7 Climbing Stairs
问题:
你正在攀爬一把一共有n个台阶的梯子,每次可以爬一或二阶,爬到顶共有多少种不同的方式?
难度:简单
分析:
当梯子阶数为0时,有0种攀爬方式;当阶数为1时,则有一种攀爬方式。当阶数为2时,由于每次可以爬一阶或两阶,即从0阶处爬两阶到达顶部或由1阶处爬1阶到达顶处,共2种方式。n=3时同样,可以由1阶处爬两阶或由2阶处爬1阶到达。设对于i阶阶梯不同的攀爬方式为S(i),可得递推公式为 S(i) = S(i-1) + S(i-2) (2≤i≤n) (看起来很眼熟 ;-))
解决方案:
Java - 244m ...
原题链接:#7 Reverse Integer
要求:
按位反转输入的数字
例1: 输入 x = 123, 返回 321
例2: 输入 x = -123, 返回 -321
难度:简单
分析:
对于一般情况,首先保存输入数字的符号,然后每次取输入的末位(x%10)作为输出的高位(result = result*10 + x%10)即可。但须考虑边界情况,即输入大于Integer.MAX_VALUE或小于Integer.MIN_VALUE的情况。根据用例的结果,这时应输出0。我们用x<0&&-x<0来判断输入是否属于这种情况。
解 ...
原题链接:#66 Plus One
要求:
给定一个用数字数组表示的非负整数,如num1 = {1, 2, 3, 9}, num2 = {9, 9}等,给这个数加上1。
注意:
1. 数字的较高位存在数组的头上,即num1表示数字1239
2. 每一位(数组中的每个元素)的取值范围为0~9
难度:简单
分析:
题目比较简单,只须从数组尾部开始,若当前位是9则向前一位进位,小于9则直接将当前位加一返回即可。
另外需要注意的是全为9的情况,在这种情况下结果数组的位数比输入数组多一位。即输入{9, 9}输出{1, 0, 0}。
解决方案:
Java - ...
原题链接:#137 Single Number II
要求:
给定一个整型数组,其中除了一个元素之外,每个元素都出现三次。找出这个元素
注意:算法的时间复杂度应为O(n),最好不使用额外的内存空间
难度:中等
分析:
与#136类似, ...
最近正在试用Netty,关于Netty是什么以及它能够做什么,在其官网的“Netty口号”中说得很清楚:
Netty is an asynchronous event-driven network application framework
for rapid development of maintainable high performance protocol servers & clients.
这句话很多人已经翻译过了,Netty是一个异步的、事件驱动的网络应用框架,用于快速开发可维护的、高性能的服务器和客户端。补充一句,Netty封装了传输层协 ...
Nodejs简介
Node.js 基于 Chrome JavaScript 运行环境,用于便捷地搭建快速、可扩展的网络应用。
它使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效,
非常适合于运行在分布式设备的数据密集型实时应用。
当前版本:v0.12.4
安装配置Node.js
在官网下载页根据自己的平台选择安装程序。对于Windows有msi与exe两种选择。msi会自动装好node与npm,同时设置一些环境变量。为了学习和配置上的灵活性,这里选择下载64位的exe文件。
建立目录(如d:\nodejs),把下载下来的node.exe拷贝进去。并将此目录 ...
本文译自StackOverflow上对此问题的讨论。
原问题链接
在阅读Joshua Bloch的《Effective Java(第二版)》第8条“覆盖equals时请遵守通用约定”时对如下论述有疑问:
“不要将equals声明中的Object对象替换为其他的类型。程序员编写出下面这样的equals方法并不鲜见,这会使程序员花上数个小时都搞不清它为什么不能正常工作:”
public boolean equals(MyClass o) {
//...
}
“问题在于,这个方法并没有覆盖(override)Object.equals,因为它的参数应当是Object类型 ...
一个简单的js小轮子。先说应用场景:
以json字符串的形式拿到map,如'{"key1":"value1","key2":"value2","key3":"value3"}'
需要遍历该map的键,并利用键的集合生成下拉框的option
选择该下拉框中的某一项时,需要得到该键对应的值
首先将利用JSON.parse()方法解析传入的jsonStr,得到对应的Object。
var jsonStr = '{"key1":" ...
原题链接:#9 Palindrome Number
要求:
判断一个整数是否是回文数,不要使用额外的存储空间
难度:简单
分析:
题目限制不允许使用额外的存储空间应指不允许使用O(n)的内存空间,O(1)的内存用于存储中间结果是可以接受的。于是考虑将该整型数反转,然后与原数字进行比较。
注:没有看到有关负数是否可以是回文数的明确结论,例如-1,-121等。根据LeetCode Judging结果暂认为所有负数都不是回文数
解决方案:
Java - 388ms
public boolean isPalindrome(int x ...
原题链接:#136 Single Number
要求:
给定一个整型数组,其中除了一个元素之外,每个元素都出现两次。找出这个元素
注意:算法的时间复杂度应为O(n),最好不使用额外的内存空间
难度:中等
分析:
题目限定了线性的时间复杂度,同时不使用额外的空间,即要求只遍历数组一遍得出结果。由于异或运算 n XOR n = 0, n XOR 0 = n,故将数组中的每个元素进行异或运算即可得到结果
解决方案:
Java - 245ms
public int singleNumber(int[] A) {
if(A.length==0) {
...
原题链接:#191 Number of 1 Bits
要求:
写一个函数,以一个无符号整数为参数,返回其汉明权重。例如,‘11’的二进制表示为'00000000000000000000000000001011', 故函数应当返回3。
汉明权重:指一个字符串中非零字符的个数;对于二进制串,即其中‘1’的个数。
难度:简单
分析:
将十进制参数转换为二进制,然后计算其中1的个数即可。
“除二取余”是常见的计算方式,由于Java中没有无符号整型,故采用无符号移位代替数学运算。这也避免了传入参数为Integer.MAX_VALUE + 1,即2147483648 (1000000000 ...
前些日子把JXL替换为ApachePOI,原因很简单,JXL在2009年10月已经停止更新,并且不支持Excel 2007 OOXML (.xlsx)格式的文件。事实上把JXL与POI进行比较并不公平,因为JXL只能够操作OLE2格式的Excel(即.xls),而POI则是能够读写xls(x)、doc(x)、ppt(x)的一整套解决方案。
不同版本Excel的行列数限制:
+-----------------+-----------+--------------+---------------------+
| | Max. Rows | Max ...
对文件及文件夹进行修改变更监测有很广泛的应用,例如:
通知配置文件的改变
跟踪某些关键的系统文件的变化
监控某个分区磁盘的整体使用情况
系统崩溃时进行自动清理
自动触发备份进程
向服务器上传文件结束时发出通知
下面给出Java的两种实现,源码可以在GitHub上找到 FileMonitor
JDK1.6及之前版本: 基于Timer实现
两个关键类:
java.util.Timer
java.util.TimerTask
Timertask是由Timer执行的实际任务,实现了Rannable接口。通过重写run()方法来指定具体任务细 ...