![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
喝咖啡的皮卡丘
正在学习java的大三学生,会分享一些整理的经典问题和知识点、注意事项等。
展开
-
剑指Offer-11(旋转数组的最小数字)二分查找的应用,思维的严密性。
题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组[3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。 示例 1: 输入:[3,4,5,1,2] 输出:1 示例 2: 输入:[2,2,2,0,1] 输出:0 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/xuan-zhuan-shu-zu-de-zui-xiao...原创 2021-09-30 08:31:20 · 68 阅读 · 0 评论 -
剑指Offer-04(二维数组中的查找)寻找可以排除一部分数据的点
题目: 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 示例: 现有矩阵 matrix 如下: [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30] ] 给定 targ...原创 2021-09-27 18:18:12 · 85 阅读 · 0 评论 -
剑指Offer-53-2(0-n-1中缺失的数字)二分查找的应用。
目录 题目: 思路: 代码: 结果: 题目: 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。 示例 1: 输入: [0,1,3] 输出: 2 示例2: 输入: [0,1,2,3,4,5,6,7,9] 输出: 8 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/que-shi-de-shu-zi-lcof.原创 2021-09-27 14:38:10 · 74 阅读 · 0 评论 -
剑指Offer-53-1(在排序数组中查找数字I),二分查找的应用。
题目: 统计一个数字在排序数组中出现的次数。 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 示例2: 输入: nums = [5,7,7,8,8,10], target = 6 输出: 0 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof 思路: 1.这道题看起来非常容易,常规思路是遍..原创 2021-09-27 11:41:01 · 75 阅读 · 0 评论 -
java学习-剑指Offer(Day03_2)左旋字符串
题目: 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。 示例 1: 输入: s = "abcdefg", k = 2 输出:"cdefgab" 示例 2: 输入: s = "lrloseumgh", k = 6 输出:"umghlrlose" 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/pro..原创 2021-09-24 17:26:22 · 85 阅读 · 0 评论 -
java学习-剑指Offer(Day03-1)替换空格
题目: 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s = "We are happy." 输出:"We%20are%20happy." 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof 思路: 这道题比较容易,但值得注意的是,String字符串存储在字符串常量池,不能直接对String字符串进行修改,因此我们要先将其转化为StringBuilder..原创 2021-09-24 14:25:12 · 76 阅读 · 0 评论 -
java学习-剑指Offer(Day02_2)链表反转,多种方法解题。
题目: 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof 思路: 拿到这种反转的题,一个月前刚刚学习数据结构的我,第一思路是通过栈来反转。 栈解.原创 2021-09-24 10:46:56 · 114 阅读 · 0 评论 -
java学习-剑指Offer(Day02-1):复杂链表的复制
题目: 请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/fu-za-lian-biao-de-fu-zhi-lcof 思路: 拿到这道题,相较于普通的链表复制,这道题的麻烦点在random指向的节点可能已经存在,也可能没创建,或者为null.原创 2021-09-24 10:04:58 · 88 阅读 · 0 评论 -
剑指Offer-09(用两个栈实现队列)
目录 用两个栈实现队列: 思路: 代码: 用两个栈实现队列: 思路: 1.stack_in用来压栈。 2.stack_out用来弹栈,由于队列要先进先出,而队列只能先进后出,所以我们要保证stack_out最上面的数据是现有数据中最先进来的,即将stack_in中的元素反转过来(stack_in弹栈进入stack_out)。如果stack_out为空再进行下次压栈,否则顺序会乱。 代码: package JianZhiOffer; import java.util.Stac..原创 2021-09-22 15:51:21 · 73 阅读 · 0 评论