
java剑指offer
你怎么又偷懒
这个作者很懒,什么都没留下…
展开
-
二维数组中查找整数
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。题目链接解题思路:与右上角进行比较:若target比较小,则该整数不在该列;若target比较大,则该整数不在该行public class Solution { public boolean ...原创 2018-12-07 17:34:28 · 422 阅读 · 0 评论 -
替换空格
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。题目连接解题思路:‘%20’长度为3,‘空格’长度为1,相差2。计算原来字符串的长度和空格个数,原长度加上 2*空格数 就是新字符串长度。根据新长度new新字符串数组,遍历进行赋值。public class Solution {...原创 2018-12-07 16:32:05 · 178 阅读 · 0 评论 -
矩形覆盖(java)
题目描述:我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?分析:画图可发现,此题为斐波那契数列,代码如下public class Solution { public int RectCover(int target) {if(target <= 0) return 0; else i...原创 2018-12-27 11:04:28 · 150 阅读 · 0 评论 -
变态跳台阶
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。分析:f(1) = f(0) = 0;f(2)=f(2-1)+f(2-2) //第一次挑一阶 + 第一次跳两阶f(3)=f(3-1)+f(3-2)+f(3-3)…观察发现,n>1时,f(n)=2*f(n-1)public class Solution { ...原创 2018-12-27 18:02:52 · 198 阅读 · 0 评论 -
旋转数组中的最小数字
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。import java.util.ArrayList;public class Solution { ...原创 2018-12-28 17:09:46 · 183 阅读 · 0 评论 -
二进制中1的个数
题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。两数相与:参与运算的两个数,按二进制位进行“与”运算。题目解析:(来源:牛客网)如果一个整数不为0,那么这个整数至少有一位是1。如果我们把这个整数减1,那么原来处在整数最右边的1就会变为0,原来在1后面的所有的0都会变成1(如果最右边的1后面还有0的话)。其余所有位将不会受到影响。举个例子:一个二进制数1100,从...原创 2018-12-29 11:03:01 · 167 阅读 · 0 评论 -
数组中出现次数超过一半的数字
题目描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。题目解析:先将数组排序,记下数组中间位置的数num;遍历数组,记录该数出现的次数count,如果大于数组长度一半长度len/2,则返回该数,否则返回0。public c...原创 2018-12-30 16:15:54 · 266 阅读 · 0 评论