快排的递归版本和非递归版本。 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。(29) 输入n个数,找出其中最小的k个数。(30) 1、思路: 递归版本:首先随机选定分割数,对数组中小于该分割数的放在左…
分类:剑指offer
二分查找及拓展
请快速写出二分查找的代码。 把一个数组最开始的若干个元素搬到数组的末尾,叫数组的旋转。输入一个递增排序的数组的一个旋转,输出数组的最小元素。(8) 统计一个数字在排序数组中出现的次数。(38) 1、思路: 要求输入数…
位运算
输入一个整数,输出该数二进制表示中1的个数。附加题:判断一个数是否是2的幂。 一个整数数组里除了两个数字以外,其他数字都出现两次。请找出只出现一次的数字,要求时间复杂度O(n),空间复杂度O(1)。 写一个函数,求两个整…
大数问题
输入数字n,按顺序打印出从1到最大的n位十进制。 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印出所有数字中最小的一个。 大数相加和大数相乘。 1、思路: 首先想到的方法必然是确定上限,比如n=3,上限…
剑指Offer解题报告(Java版)——字符串转换为数字 49
引言 STOI是很常见的一道题,leetcode上也有,字符串转换为数字一般都会有现成的函数去实现这样的功能,但有时候需要我们理解其中的具体实现,因为虽然是个很常见…
剑指Offer解题报告(Java版)——排序数组中某个数的个数 38
分析问题 问题只需要找到排序数组中某个数K的个数,由于已经是排序了,K一定是在一堆的,所以我们只需要找到第一个K的index1,然后找到最后一个K的index2就可…
剑指Offer解题报告(Java版)——不用加减乘除做加法 47
引言 一般这种不能用四则运算的题都只有用位运算来做,目的是加强大家对计算机计算的理解,真是有点扯淡呢 解决问题  …
剑指Offer解题报告(Java版)——约瑟夫环 45
引言 常见的约瑟夫环问题有用循环链表做的,有用数组做的,这里提供一个用数学公式做的,由此可见,很多计算机的问题如果最终用到数学的知识,时间复杂度会大大的降低 &nb…
剑指Offer解题报告(Java版)——扑克牌顺子 44
分析问题 这个题目的关键点在于大小王可以看作任意的数字,那么我们就把这个任意的数字看作0也未尝不可,因为扑克牌中1-15都有数字,所以可以用0代表大小王  …
剑指Offer解题报告(Java版)——n个骰子的点数 43
问题 n个骰子朝上的数之和为s,求s的所有可能以及概率 分析问题 如果是用笨方法,一般人最开始都会想到笨方法,那就是枚举法 …
剑指offer解题报告(Java版)——翻转单词顺序 左旋字符串 42
引言 这种翻转的问题会遇到很多,其实就是一个倒序的问题,对于第一个题只是想翻转单词的顺序,而并不想把整个字符串翻转了,如果完全翻转的话,比如I am a stude…
剑指offer解题报告(Java版)——和为s的两个数,一串连续数 41
引言 第一问题很简单,leetcode上也有相应的题,2Sum问题,leetcode上还有2Sum的进阶版3Sum,只是在这个问题上增加了一层循环而已,另外还有3S…