剑指offer(第2版)
HapyJerry7
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 06. 从尾到头打印链表
题目:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。使用入栈和出栈的方式,刚好从尾到头反过来原创 2021-11-04 12:34:42 · 80 阅读 · 0 评论 -
剑指 Offer 05. 替换空格
题目:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。思路:Java 等语言中,字符串都被设计成「不可变」的类型,即无法直接修改字符串的某一位字符,需要新建一个字符串实现。1、初始化一个StringBuilder 记为str;2、遍历s的字符数组,是空格就拼接上“%20”,是字符就直接拼接上该字符。...原创 2021-11-04 11:18:21 · 73 阅读 · 0 评论 -
剑指 Offer 04. 二维数组中的查找
题目:在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:1、首先定义二维数组左下角元素的坐标(i为行,j为列),将该元素记为flag,由于每一行从左到右递增,所以如果flag > target ,则该行元素都比target大 ,因此执行i–(向上走);2、又因为每一列都从上到下递增,所以如果flag < target,则该行元素都比target原创 2021-11-04 09:52:27 · 98 阅读 · 0 评论 -
剑指 Offer 03. 数组中重复的数字
题目:找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。方法一:思路:将数组nums中的数一一放入HashSet中,如果HashSet中含有该数,则找到重复的数。方法二:思路:注意:在一个长度为 n 的数组 nums 里的所有数字都在 0 ~ n-1 的范围内说明含义:数组元素的 索引 和 值 是 一对多 的关系...原创 2021-11-03 23:01:24 · 88 阅读 · 0 评论 -
剑指 Offer 10- I. 斐波那契数列
题目:写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。解题思路:递归法:由上图可知,大量重复的递归计算,时间复杂度太高代码思路原创 2021-11-01 12:45:23 · 101 阅读 · 0 评论 -
剑指 Offer 09. 用两个栈实现队列
在这里插入代码片解题思路:1、维护两个栈,第一个栈支持插入操作,第二个栈支持删除操作;2、根据栈先进后出的特性,我们每次往第一个栈里插入元素后,第一个栈的顶部元素是最后插入的元素,第一个栈的底部元素是下一个待删除的元素;3、为了维护队列先进先出的特性,我们引入第二个栈,用第二个栈维护待删除的元素;4、在执行删除操作的时候我们首先看下第二个栈是否为空。如果为空,我们再看第一个栈是否为空,如果也为空,即放回-1;否则,将第一个栈里的元素一个个弹出插入到第二个栈里,这样第二个栈里元素的顺序就是待删除的元素原创 2021-11-01 11:31:27 · 87 阅读 · 0 评论