
剑指offer
zycxnanwang
这个作者很懒,什么都没留下…
展开
-
把字符串转换成整数
把字符串转换成整数题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0示例1输入+2147483647 1a33输出2147483647 0解题思路其实题目挺简单的,但是需要注意...原创 2020-03-05 18:43:49 · 481 阅读 · 0 评论 -
数组中只出现一次的数字
数组中只出现一次的数字题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路可以使用map数据结构解决问题,map的key是数字,value是其在数组中出现的次数。遍历一遍数组,初始化map,遍历一遍map,得到在数组中仅出现一次的两个数字。但是更巧妙的方法是使用位运算使用位运算的具体步骤如下牢记两点,任何两个相同的数相异或,...原创 2020-01-15 20:40:42 · 520 阅读 · 4 评论 -
丑树
丑树题目 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。思路 初始化array和队列:Q2 Q3 Q5 将1插入array 分别将1 * 2、1 * 3 、1*5插入Q2 Q3 Q5 令x为Q2 Q3 Q5中的最小值,将x添加至arra原创 2017-07-25 22:09:07 · 1156 阅读 · 0 评论 -
二叉树
二叉树的先序,中序,后序遍历知识点先序遍历:先根节点,之后左子树,后右子树 序列:ABDECFG中序遍历:先左子树,之后根节点,后右子树 序列:DBEAFCG后序遍历:先左子树,之后右子树, 后根节点 序列:DEBFGCA 剑指offer题目输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1原创 2017-07-18 22:19:12 · 423 阅读 · 0 评论 -
整数中1出现的次数
整数中1出现的次数题目 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。思想 解法链接代码public class Solution { publi原创 2017-08-02 11:08:29 · 477 阅读 · 0 评论 -
链表中环的入口节点
链表中环的入口节点题目 一个链表中包含环,请找出该链表的环的入口结点。思想 初始化两个指针fast, low, 开始都指向头结点, fast每下走两步, low每下走一步,如果 链表中有环,则两节点一定会相遇。如果没有环,则fast或者fast.next会先走到空 start: 头结点到相遇节点的距离 step: low指针在环中走过的距离 Dis原创 2017-08-01 20:36:57 · 281 阅读 · 0 评论 -
不用加减乘除做加法
不用加减乘除做加法题目 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号思想 不能用加减乘除,只好用位运算了 两数异或可以求出两数不带进位的和(7 ^ 10 = 13) 两数相与再左移一位可以求出两数的进位( (7 & 10) << 1 = 4) 循环直到进位为0,既可以出结果代码public class Solution {原创 2017-08-01 18:02:53 · 258 阅读 · 0 评论 -
栈的压入弹出序列
栈的压入弹出序列题目 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思想:用一个模拟栈来模仿序列的压入, 弹出代码import java.uti原创 2017-07-19 22:32:32 · 364 阅读 · 0 评论 -
逆序对
逆序对题目 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007思想 归并排序以书上{7, 5, 6 , 4} 为例分解和归并过程分解过程不多说,更归并排序一样,合并过程有点不同其两个指针开始是指向两边最大元素,如果p1 > p2,那么相原创 2017-08-01 10:50:15 · 381 阅读 · 0 评论 -
整数的二进制中1的个数
整数的二进制中1的个数代码public class Solution { public int NumberOf1(int n) { int count = 0; while(n != 0) { count++; n = n & (n - 1); } return count;原创 2017-07-19 15:24:47 · 321 阅读 · 0 评论 -
Fibonacci非递归解法
Fibonacci非递归解法public class Solution { public int Fibonacci(int n) { int a = 0, b = 1; for(int i = 0; i < n; i++) { b = a + b; a = b - a; } re原创 2017-07-19 00:44:47 · 485 阅读 · 0 评论 -
二叉搜索树与双向链表
二叉搜索树与双向链表题目: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。思想: 递归思想代码:public class Solution { public TreeNode Convert(TreeNode pRootOfTree) { if(pRootOfTree == null) retur原创 2017-07-21 21:22:59 · 341 阅读 · 0 评论 -
复杂链表的复制
复杂链表的复制题目 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)思想 由于链表节点必须重新分配,普通的遍历方法相形见绌,所以有如下方法。代码:/*public class RandomListNode { int l原创 2017-07-21 00:21:49 · 369 阅读 · 0 评论 -
二叉搜索树的后序遍历序列
二叉搜索树的后序遍历序列知识点二叉搜索树的定义:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值它的左、右子树也分别为二叉搜索树例子:如图所示二叉树:题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。思想 抓住二叉搜索原创 2017-07-21 00:21:04 · 352 阅读 · 0 评论