剑指offer-java实现
Wendy0719
这个作者很懒,什么都没留下…
展开
-
整数中1出现的次数(从1到n整数中1出现的次数)
题目:求整数中1出现的次数?如果要计算百位上1出现的次数,它要受到3方面的影响:百位上的数字,百位以下(低位)的数字,百位以上(高位)的数字。原创 2017-06-07 18:27:14 · 485 阅读 · 0 评论 -
不用加减乘除做加法
题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。解题思路:1.不带进位的加:num1 ^ num2 2.进位:(num1 & num2) << 1解法一(递归)java实现:public class原创 2017-06-15 15:47:03 · 308 阅读 · 0 评论 -
求1+2+...+n
题目:求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。解题思路:1.利用&&的短路特性实现递归终止。 2.当n==0时,(n>0)&&((sum+=Sum_Solution(n-1))>0)只执行前面的判断为false就直接返回0; 3.当n>0时,执行sum+=Sum_Solution(n-1),实现递归原创 2017-06-15 15:40:07 · 834 阅读 · 0 评论 -
翻转单词顺序&左旋转字符串
一.翻转单词顺序解题思路:1.翻转句子中的所有字符 2.翻转每个单词中字符的顺序java实现二。左旋转字符串原创 2017-06-26 17:39:45 · 609 阅读 · 0 评论 -
数组中的逆序对
题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 解题思路:1.归并排序; 2.在merge的时候,如果array[i] > array[j]说明从array[i]到array[mid]的数都大于array[j]。原创 2017-06-13 11:52:11 · 341 阅读 · 0 评论 -
第一个只出现一次的字符
题目:在一个字符串(1<=字符串长度<=10000)中找到第一个只出现一次的字符,并返回它的位置。解题思路:1.共遍历两次字符串,第一次遍历统计每个字符出现的次数,第二次遍历遇到次数为1的字符返回它的位置即可。 2.char占一个字节,共8位,有256种可能,我们开一个大小为256的数组来保存每个字符出现的次数。java实现原创 2017-06-08 15:40:31 · 235 阅读 · 0 评论 -
丑数
题目:把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。原创 2017-06-08 16:17:19 · 331 阅读 · 0 评论 -
把数组排成最小的数
把数组排成最下的数解题思路java实现比较器大数问题原创 2017-06-08 11:12:38 · 314 阅读 · 0 评论 -
约瑟夫环
题目:0,1,…,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。解题思路:递推公式约瑟夫环原创 2017-06-28 22:02:13 · 600 阅读 · 0 评论 -
扑克牌的顺子
题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王可以看成任意数字。解题思路:1.排序数组; 2.统计数组中0的个数和非0数字之间的空缺总数; 3.如果0的个数大于等于空缺总数,这个数组就是连续的,反之不连续。原创 2017-06-27 18:46:56 · 679 阅读 · 0 评论 -
和为S的两个数字 & 和为S的连续正数序列
和为S的两个数字和为S的连续正数序列原创 2017-06-14 18:21:11 · 479 阅读 · 0 评论