
编程题-剑指Offer
文章平均质量分 84
hll174
没有一开始的大牛,先做好自己的小菜
展开
-
数组中唯一出现一次的一个,两个,三个数,其余数都是偶数次出现(java版本)
首先在leetcode上面有这样类似的题,做法大致类似1,首先是只出现一次的一个数比较简单,直接全部亦或值就得到了//只出现一次的一个数 public static int singleNumber1(int[] A) { int res=0; for(int i=0;i<A.length;i++) res^=A[i];原创 2015-05-02 14:06:50 · 1798 阅读 · 0 评论 -
整数中1出现的次数(从1到n整数中1出现的次数)
题目描述求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数public class Solution { public int NumberOf1原创 2016-03-23 23:20:14 · 489 阅读 · 0 评论 -
链表中环的入口结点
题目描述一个链表中包含环,请找出该链表的环的入口结点。分析:此题说明了单链表中一定有环,且只有一个环,一般做法都是用快慢指针来进行跑,由于有环就不去判断是否有环慢指针速度为1,块指针速度为2,第一次相遇后停止,让慢指针回到头,再次都以速度1开始跑,再次相遇的地点即为链表的环的入口点。数学证明公式如下: 第一次相遇时: 慢原创 2016-03-26 13:26:00 · 446 阅读 · 0 评论 -
丑数(JAVA)
题目描述把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。分析:根据丑数的定义,丑数只能被2、3和5整除。也就是说如果一个数如果它能被2整除,我们把它连续除以2;如果能被3整除,就连续除以3;如果能被5整除,就除以连续5。如果最后我原创 2016-03-24 22:52:12 · 4060 阅读 · 1 评论 -
二叉搜索树与双向链表(java版)
题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。分析: 对于二叉搜索树,用中序搜索算法挺适合。考虑每个子树子节点作为三部分,这里以根结点为特殊例子进行阐述递归实现,每次用一个lastNode存放上一个子树的最后一个结点,该结点是上个已排好子树的最大的结点。原创 2016-03-27 22:18:48 · 2252 阅读 · 3 评论 -
正则表达式匹配-剑指offer(JAVA版)
题目描述请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配 分析:递归实现每次分别在str 和pattern中取一个字原创 2016-03-28 21:15:04 · 4030 阅读 · 2 评论 -
表示数值的字符串---JAVA版
题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。分析: 这题条件有点多,从最后的测试用例可以知道 "600."这种形式是算true的具体的条件是:原创 2016-03-28 22:31:11 · 1082 阅读 · 0 评论 -
滴血总结(java版):最长公共子序列(子串)、最长公共回文子序列(子串)、最长公共前缀(后缀)
1,最长公共前缀问题有点类似冒泡算法,每次都要找最小的串的长度,然后进行截取,代码如下public String longestCommonPrefix(String[] strs) { if(strs.length==0) return ""; String s=strs[0]; for (int i = 1; i < strs.l原创 2015-05-02 19:22:19 · 2365 阅读 · 0 评论