自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 剑指 Offer 10- II. 青蛙跳台阶问题

剑指 Offer 10- II. 青蛙跳台阶问题 题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 示例 1: 输入:n = 2 输出:2 示例 2: 输入:n = 7 输出:21 示例 3: 输入:n = 0 输出:1 提示: 0 <= n <= 100 题目解析: 通过题目我们可以知道当n=0 || n=

2021-06-19 08:34:01 70

原创 剑指 Offer 49. 丑数

剑指 Offer 49. 丑数 题目描述 我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。 说明: 1 是丑数。 n 不超过1690。 题目分析: 由丑数定义可得一个丑数=2n*3n*5^得到且 一个丑数乘以2||3||5一定是一个丑数 由前十个丑数1, 2, 3, 4, 5, 6, 8, 9,

2021-06-07 22:10:31 50

原创 剑指 Offer 56 - I. 数组中数字出现的次数

剑指 Offer 56 - I. 数组中数字出现的次数 题目: 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的>数字。要求时间复杂度是O(n),空间复杂度是O(1)。 示例 1: 输入:nums = [4,1,4,6] 输出:[1,6] 或 [6,1] 示例 2: 输入:nums = [1,2,10,4,1,4,3,3] 输出:[2,10] 或 [10,2] 限制: 2 <= nums.length <= 10000 题目解析

2021-06-05 20:24:24 68

原创 剑指 Offer 35. 复杂链表的复制

剑指 Offer 35. 复杂链表的复制 请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针>指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。 示例 1: 输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]] 输出:[[7,null],[13,0],[11,4],[10,2],[1,0]] 示例 2: 输入:head = [[1,1],[2,1]] 输出:

2021-06-05 07:46:20 41

原创 剑指 Offer 57 - II. 和为s的连续正数序列

剑指 Offer 57 - II. 和为s的连续正数序列 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。 示例 1: 输入:target = 9 输出:[[2,3,4],[4,5]] 示例 2: 输入:target = 15 输出:[[1,2,3,4,5],[4,5,6],[7,8]] 限制: 1 <= target <= 10^5 题目分析 这道题我使用了双指针的做

2021-06-04 21:59:33 45

原创 剑指 Offer 56 - II. 数组中数字出现的次数 II

剑指 Offer 56 - II. 数组中数字出现的次数 II 题目描述 在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。 示例: 输入:nums = [3,4,3,3] 输出:4 示例: 输入:nums = [9,1,7,9,7,9,7] 输出:1 解题思路: 看到这个题头脑中第一次跳出来的想法是用HashMap,直接统计然后选出来小统计数量为1的那个,简单直接暴力,say干就干,迅速写好如下代码,竟然一次跑过了,开心,但是效率好低呀,题解

2021-06-03 20:59:58 130

原创 剑指 Offer 45. 把数组排成最小的数

剑指 Offer 45. 把数组排成最小的数 题目描述: 输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 示例 1: 输入: [10,2] 输出: “102” 示例 2: 输入: [3,30,34,5,9] 输出: “3033459” 提示: 0 < nums.length <= 100 说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数 拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0 题目分析: 这个

2021-05-16 09:50:47 46

原创 剑指 Offer 41. 数据流中的中位数

剑指 Offer 41. 数据流中的中位数 题目描述: 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 例如, [2,3,4] 的中位数是 3 [2,3] 的中位数是 (2 + 3) / 2 = 2.5 设计一个支持以下两种操作的数据结构: void addNum(int num) - 从数据流中添加一个整数到数据结构中。 double findMedian() -

2021-05-08 21:45:44 42

原创 剑指 Offer 09. 用两个栈实现队列

剑指 Offer 09. 用两个栈实现队列 题目描述: 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例 1: 输入: [“CQueue”,“appendTail”,“deleteHead”,“deleteHead”] [[],[3],[],[]] 输出: [null,null,3,-1] 示例 2: 输入: [“C

2021-04-21 21:36:19 46

原创 剑指 Offer 25. 合并两个排序的链表

剑指 Offer 25. 合并两个排序的链表 题目描述: 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 限制: 0 <= 链表长度 <= 1000 题目分析: 从题目可以看出这道题可以使用循环遍历两个链表的方式进行求解,分别将两个两表的节点进行比较,小的放到结果链表上。不难看出既可以使用迭代的方式,也可以使用递

2021-04-18 19:45:12 38

原创 剑指 Offer 15. 二进制中1的个数

剑指 Offer 15. 二进制中1的个数 题目描述: 请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。 例如,把 9 表示成二进制是 1001,有 2 位是1。 因此,如果输入 9,则该函数输出 2。 示例 1: 输入:00000000000000000000000000001011 输出:3 解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。 示例 2: 输入:0000000000000000000

2021-04-16 20:52:30 37

原创 剑指 Offer 24. 反转链表

剑指 Offer 24. 反转链表 题目描述: 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 限制: 0 <= 节点个数 <= 5000 题目分析: 刚开始想使用栈的方式来进行题解,单纯了,毕竟是年轻呀哈哈哈, 后来仔细一想可以使用迭代的方式进行题解使用两个指针变量一个分别记录节点的位置,然后

2021-04-14 22:19:27 36

原创 剑指 Offer 54. 二叉搜索树的第k大节点

剑指 Offer 54. 二叉搜索树的第k大节点 题目描述: 给定一棵二叉搜索树,请找出其中第k大的节点。 示例 1: 输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2 输出: 4 示例 2 输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6 / \ 2 4 / 1 输出: 4 题目分析: 学习过数据结构的小伙伴自然会知道,二叉搜索树的中序遍历得到的结

2021-04-12 21:58:18 38

原创 剑指 Offer 17. 打印从1到最大的n位数

剑指 Offer 17. 打印从1到最大的n位数 输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。 示例 1: 输入: n = 1 输出: [1,2,3,4,5,6,7,8,9] 说明: 用返回一个整数列表来代替打印 n 为正整数 解题: 看到这个题,第一想法想到的是,这个题在考大数,然后看到给出的代码返回值是int,好家伙这直接暴力就OK了呀。很费解LeetCode的行为。 代码: class Solution

2021-04-11 20:44:09 41

原创 剑指 Offer 22. 链表中倒数第k个节点

剑指 Offer 22. 链表中倒数第k个节点 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。 示例: 给定一个链表: 1->2->3->4->5, 和 k = 2. 返回链表 4->5. 解题思路: 初见此题,想到的第一个方法就是先遍历所有链表节点,记为n然后再设置

2021-04-10 22:10:58 100 2

原创 剑指 Offer 55 - I. 二叉树的深度

剑指 Offer 55 - I. 二叉树的深度 输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最大深度 3 。 提示: 节点总数 <= 10000 分析: 由题目可知:这道题是让求二叉树的深度,可以使用递归的方式进行深度搜索。 分别对左右子树进行深

2021-04-08 20:30:13 46

原创 剑指 Offer 27. 二叉树的镜像

题目描述: 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 例如输入: 4 / \ 2 7 / \ / \ 1 3 6 9 镜像输出: 4 / \ 7 2 / \ / \ 9 6 3 1 示例一: 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 限制:

2021-04-07 21:20:46 46

原创 剑指 Offer 58 - II. 左旋转字符串

剑指 Offer 58 - II. 左旋转字符串 难度:简单题 题目描述: 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。 示例 1: 输入: s = “abcdefg”, k = 2 输出: “cdefgab” 示例 2: 输入: s = “lrloseumgh”, k = 6 输出: “umghlrlose” 连续好几道题,发现都没有思路,就

2021-04-06 23:16:01 37

原创 剑指 Offer 66. 构建乘积数组

剑指 Offer 66. 构建乘积数组 给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。 示例: 输入: [1,2,3,4,5] 输出: [120,60,40,30,24] 提示 所有元素乘积之和不会溢出 32 位整数 a.length <= 100000 这道题的难点主要在于不能使用 除法,于是先

2021-03-27 10:57:34 47

原创 剑指Offer65.不用加减法做加法

剑指Offer65.不用加减法做加法 写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。 看到这个题目,我第一时间想到的就是使用位运算进行模拟加法计算,因为Java中使用的是补码进行运算。知道了大致的方向,但是对于位运算的操作不熟悉的我,很难受呀,模拟不出来,只好去看题解,惭愧惭愧。 好家伙,直接好家伙,这个题远远没有我想的那么简单,原来还要区分进位,与不进位。 进位操作使用&操作和<<进行模拟 不进位的操作可以使用异或^操作进行模拟。

2021-03-25 20:27:30 54

原创 剑指Offer-01

剑指Offer-01 题目描述: 求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 解题思路: 看到这个题目,我第一时间想到的就是利用循环来计算,然而题目描述的不让使用,后来想了一下,高数里面有解决该问题的方法诶,等差数列求和不是最好的方式吗?但是题目要求不让使用乘除法,只能再次放弃。仔细考虑一下还剩下什么可以用,还可以使用逻辑运算符,位运算符号,加减法可以使用,以及比较运算符。可以尝试一下使用递归进行计算, pu

2021-03-22 21:24:56 89

原创 笔试题练习记录

笔试题练习记录 题目描述: 小美是美团的前端工程师,为了防止系统被恶意攻击,小美必须要在用户输入用户名之前做一个合法性检查,一个合法的用户名必须满足以下几个要求: 用户名的首字符必须是大写或者小写字母。 用户名只能包含大小写字母,数字。 用户名需要包含至少一个字母和一个数字。 如果用户名合法,请输出 “Accept”,反之输出 “Wrong”。 分析:看到这到题第一时间想到的就是使用字符串转char数组然后循环遍历进行判断等等,这样写代码量也太大了,不美丽,突然灵光一现,或许可以使用正则表达式来试一下。

2021-03-20 21:38:58 135 2

原创 初学SSM--------SSM整合练手项目问题---1

SSM整合练手项目问题一 问题描述:Error:() java: 程序包org.springframework.beans.factory.annotation不存在 解决方法 1. 打开settings 2.找到Runner 3.勾选 Delegate IDE build/run actions to Maven

2021-01-27 17:12:22 44

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除