剑指offer
秃头哥编程
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 52. 两个链表的第一个公共节点
2021-07-21 LeetCode每日一题 链接:https://leetcode-cn.com/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/ 标签:哈希表、链表、双指针 题目 输入两个链表,找出它们的第一个公共节点。 如下面的两个链表**:** 在节点 c1 开始相交。 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5],原创 2021-07-21 20:33:25 · 230 阅读 · 0 评论 -
剑指 Offer 53 - I. 在排序数组中查找数字 I
2021-07-16 LeetCode每日一题 链接:https://leetcode-cn.com/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/ 标签:数组、二分查找 题目 统计一个数字在排序数组中出现的次数。 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 示例 2: 输入: nums = [5,7,7,8,8,10], target = 6 输出: 0 限制: 0 <=原创 2021-07-16 20:42:52 · 252 阅读 · 0 评论 -
剑指 Offer 37. 序列化二叉树
2021-06-30 LeetCode每日一题 链接:https://leetcode-cn.com/problems/xu-lie-hua-er-cha-shu-lcof/ 标签:树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 题目 请实现两个函数,分别用来序列化和反序列化二叉树。 你需要设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。 提示:输入输出格式与 LeetC原创 2021-06-30 21:53:50 · 270 阅读 · 2 评论 -
剑指 Offer 15. 二进制中1的个数
2021-06-23 LeetCode每日一题 链接:https://leetcode-cn.com/problems/er-jin-zhi-zhong-1de-ge-shu-lcof/ 标签:位运算 题目 请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。 输入:00000000000000000000000000001011 输出:3 解释:输入的二进制串 00000000原创 2021-06-23 20:13:46 · 262 阅读 · 3 评论 -
剑指 Offer 38. 字符串的排列
2021-06-22 LeetCode每日一题 链接:https://leetcode-cn.com/problems/zi-fu-chuan-de-pai-lie-lcof/ 标签:回溯 题目 输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 输入:s = "abc" 输出:["abc","acb","bac","bca","cab","cba"] 限制: 1 <= s 的长度 <= 8 分析 这种求全排列的问题,首先想到原创 2021-06-22 21:15:13 · 256 阅读 · 1 评论 -
剑指 Offer 10- II. 青蛙跳台阶问题
链接:https://leetcode-cn.com/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/ 标签:递归、动态规划 题目 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 输入:n = 2 输出:2 输入:n = 7 输出:21 输入:n = 0 输出:1 提示: 0 <= n原创 2021-06-18 23:14:57 · 236 阅读 · 2 评论 -
剑指 Offer 10- I. 斐波那契数列
链接:https://leetcode-cn.com/problems/fei-bo-na-qi-shu-lie-lcof/ 标签:动态规划、递归 题目 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。 答案需要取模 1e9+7(100原创 2021-06-15 22:58:23 · 234 阅读 · 4 评论 -
剑指 Offer 07. 重建二叉树
链接:https://leetcode-cn.com/problems/zhong-jian-er-cha-shu-lcof/ 标签:树、递归 题目 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 限制: 0原创 2021-06-14 14:01:45 · 501 阅读 · 0 评论 -
剑指 Offer 09. 用两个栈实现队列
链接:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/ 标签:栈、设计 题目 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 输入: ["CQueue","appendTail","deleteHead","deleteHead"]原创 2021-05-29 13:30:36 · 208 阅读 · 0 评论 -
剑指 Offer 06. 从尾到头打印链表
链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/ 标签:链表 题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 输入:head = [1,3,2] 输出:[2,3,1] 0 <= 链表长度 <= 10000 分析 这题要你从尾到头打印链表,也就是倒序输出链接,但它要的返回值是一个数组。 解法一:双端队列法。使用双端队列,遍历链表,每次插入链表的头部。原创 2021-05-25 23:53:16 · 207 阅读 · 0 评论 -
剑指 Offer 05. 替换空格
链接:https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof/ 标签:字符串 题目 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 输入:s = "We are happy." 输出:"We%20are%20happy." 0 <= s 的长度 <= 10000 分析 对于这题思路很简单,只需要遍历字符串s,然后判断是否为空格,是就进行替换,不是就原样。保存结果可以使用StringBuilder或者String原创 2021-05-25 23:51:49 · 194 阅读 · 0 评论 -
剑指 Offer 04. 二维数组中的查找
链接:https://leetcode-cn.com/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/ 标签:数组、双指针、二分 题目 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 示例: 现有矩阵 matrix 如下: [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19],原创 2021-05-23 16:59:23 · 242 阅读 · 0 评论 -
剑指 Offer 03. 数组中重复的数字
剑指 Offer 03. 数组中重复的数字 链接:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/ 标签:数组、哈希表 题目 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3原创 2021-05-22 11:48:21 · 206 阅读 · 0 评论 -
剑指offer(一)
1.二维数组中的查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路:这题有比较多的解法,第一种最容易的当然是暴力破解法,复杂度为n^2,这显然不是题目理想的解法。第二种,因为每一行都是递增的,所以我们可以在每一行上使用二分查找,时间复杂度...原创 2018-07-21 15:10:33 · 1263 阅读 · 0 评论 -
剑指offer(二)
1.二进制中1的个数 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 思路:我的思路就是使用先使用Integer的toBinaryString方法将该数转换成二进制形式的字符串,然后统计1的个数。 public class Solution { public int NumberOf1(int n) { int count = 0; ...原创 2018-07-28 18:49:35 · 315 阅读 · 0 评论