算法
文章平均质量分 51
灰灰是菇凉呀
欢迎访问个人博客——http://huihui.couplecoders.tech
展开
-
丑数
题目描述设计一个算法,找出只含素因子2,3,5 的第 n 小的数。符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12...我们可以认为1也是一个丑数。要求时间复杂度为O(nlogn)或者O(n)问题分析因子只含2,3,5,那么必然是1乘以2,3,5得出的数再不断地乘以2,3,5。但是这样得出的数是无序的,并且存在重复值的。那么这道题的难度就在于怎么取到第n小...原创 2018-12-12 16:20:16 · 89 阅读 · 0 评论 -
二维数组中的查找
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。问题分析如以下表格,我们把它当成一个为维数组。它的特征是从左到右递增,从上到下递增。128924912471013681115首先...原创 2018-12-12 16:20:54 · 116 阅读 · 0 评论 -
二进制中1的个数
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。解决方法bitCount(int i)这是Integer源码中的一个方法,就是返回i的补码中1的个数。public static int bitCount(int i) { // 每两位存储每两位值为1的个数。 i = i - ((i >>> 1) & 0x555555...原创 2018-12-12 16:21:28 · 115 阅读 · 0 评论 -
从尾到头打印链表
题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。代码实现借助堆栈实现。public static ArrayList<Integer> printListFromTailToHead(ListNode listNode) { Stack<Integer> integerStack = new Stack<>(); ...原创 2018-12-12 16:22:01 · 103 阅读 · 0 评论 -
位运算
位运算相加二进制相加可以用异或操作和与操作得到结果,异或操作得到每一位上的数值,与操作得到需要进位的位置。每次相加需要将异或操作得到值和与操作得到的值左移一位相加,不断循环此操作,直到与操作得到的值为0,此时不需要进位,异或操作得到的值即为二进制相加的结果。下面为1203+1111的实例,对应的二进制为10010110011+10001010111。 10010110011 000011...原创 2018-12-12 16:22:35 · 112 阅读 · 0 评论 -
变态跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。问题分析假设跳n阶有f(n)种跳法。若第一次跳1阶,剩下n-1阶,有f(n-1)种跳法;若第一次跳2阶,剩下n-2阶,有f(n-2)种跳法;…若第一次跳n-1阶,剩下1阶,有f(1)种跳法;若第一次跳n阶,有1种跳法。则有f(n) = f(n-1) + f(n-...原创 2018-12-12 16:23:02 · 82 阅读 · 0 评论 -
旋转数组的最小数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。问题分析对于旋转数组来说,我们可以利用二分法查找其最小值。我们现在有两个选择,数组中间位的数与最低位比较或...原创 2018-12-12 16:24:04 · 94 阅读 · 0 评论 -
第K大元素
题目描述在数组中找到第k大的元素。给出数组 [9,3,2,4,8],第三大的元素是 4给出数组 [1,2,3,4,5],第一大的元素是 5,第二大的元素是 4,第三大的元素是 3,以此类推要求时间复杂度为O(n),空间复杂度为O(1)问题分析如果不考虑时间复杂度和空间复杂度,这道题目有很多种方法,利用一种排序算法将数组倒叙排序,第k个数就是第k大元素。题目的重点在于返回第K大元素,...原创 2018-12-12 16:24:32 · 228 阅读 · 0 评论 -
跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。方法一首先就是最笨的方法。n个台阶全部跳1级台阶,有1种跳法。n个台阶有一个跳2级台阶,有Cn−11C_{n-1}^1Cn−11种跳法。n个台阶有一个跳3级台阶,有Cn−22C_{n-2}^2Cn−22种跳法。…n个台阶有一个跳n/2级...原创 2018-12-12 16:25:09 · 110 阅读 · 0 评论