剑指Offer
qnvhuang
这个作者很懒,什么都没留下…
展开
-
Q4:二维数组中的查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。例:1 2 8 92 4 9 124 7 10 136 8 11 15思路:两个for循环暴力破解。。。时间复杂度O(n*m),,太没水平了(逃~ε=ε=ε=┏(゜ロ゜;...原创 2019-05-13 23:21:26 · 123 阅读 · 0 评论 -
剑指OFFER 14:二进制中一的个数
牛客一、题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。二、解法1:负数会导致死循环。1.1算法描述:先判断数字的二进制表示下,最右边的数字是不是1,然后把该数字右移1位,直到该数字为0。如何判断某一位是否为1? 将该位与 1 做与运算,答案为1,则该位为1。1.2代码实现:int numberOfOne_1(int n){ int c...原创 2019-08-05 17:00:36 · 125 阅读 · 0 评论 -
剑指OFFER 13:剪绳子 -动态规划 与 贪心
题目:给你一段长度为n 的绳子,请把绳子剪成 m 段,每段长度记作 k1,k2,...km, 要求使得 k1 * k2 * ...km 乘积最大。思路:动态规划满足的特点:特点1:求一个问题的最优解,通常是求最大值或最小值问题。特点2:该问题可以拆分为若干个子问题,该问题的最优解又依赖于子问题的最优解。比如剪长度为5的绳子,依赖的子问题就是长度为1 和 4 子问题,与长度为2 和 3 子问...原创 2019-08-03 09:46:54 · 102 阅读 · 0 评论 -
Q10:斐波那契数列
牛客网题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39。递归代码:public static int Fibonacci(int n) { if(n==0) return 0; if(n==1) return 1; return Fibonacci(n-1)+Fibonacci(n-2); ...原创 2019-07-21 23:35:50 · 152 阅读 · 0 评论 -
剑指OFFER12:回溯法-矩阵中的路径
牛客网题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如a b t gc f c sj d e h这样的3 X 4 矩阵中包含一条字符串"b f c e"的路径,但是矩阵中不包含"a b...原创 2019-07-25 14:42:38 · 134 阅读 · 0 评论 -
面试题11:旋转数组中的最小数字
牛客链接题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。思路一:最直观一组数组中找一个最小值是遍历这组数据,时间复杂度O(n)新思路:旋转数组的特性是一定程度上是有序的,而二分查找适用于排序数组。数组{3,4,5,1...原创 2019-07-24 01:35:37 · 75 阅读 · 0 评论 -
Q6:从尾到头打印链表
牛客链接题目:输入一个链表的头节点,从尾到头反过来打印出每个节点的值。思路:首先要询问是否允许改变链表结构,即改变指针方向。通常打印是读操作,不会改变链表结构。一:使用栈基于循坏:打印每个节点,则一定会遍历链表,从头节点开始,将每一个节点的值存进栈结构中,在全部抛出来就可以实现逆序操作。二:推之,递归本质就是栈结构,能用栈一定能用递归,用递归等待好处是代码简洁明了,坏处是当链表很长...原创 2019-07-14 21:50:57 · 97 阅读 · 0 评论 -
Q3、数组中重复的数字
牛客链接题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。解:剑指offer书中存在以下三种思路:思路一:对原数据进行排序,排序后找重复数字是很简单的事。空间复杂...原创 2019-07-09 00:45:26 · 120 阅读 · 0 评论 -
Q5:替换字符串中的空格
题目:将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。思路:设原字符串数组为A,新建一个大点的字符串数组B,然后遍历A,遇到空格B中的值就用 %20 代替,否则按原数组A中字符串代替。后来看了解析,是在一个数组里面操作的,思路是先遍历一遍原字符串数组,看有几个空格就可以确定新的字符串数组有多大了(新长...原创 2019-05-15 00:24:18 · 118 阅读 · 0 评论 -
剑指OFFER 15:数值的整数次方 代码的完整性
牛客给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。(不考虑大数问题)一,代码的完整性1.1 三个方面确保代码的完整性。功能测试:即考虑普通功能测试的测试用例。比如上述例子中实现的代码可以完成求数值正整数次方的基本要求。边界测试:考虑各种边界值的测试用例。如结束循环的边界条件是否正确,递归的终止条件是否正确,图遍历输入...原创 2019-08-07 10:53:02 · 120 阅读 · 0 评论