自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

剑指 Offer 25. 合并两个排序的链表难度简单输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4限制:0 <= 链表长度 <= 1000思路:(1)不使用额外内存(2)每次从两链表的头节点中选取较大节点作为头节点代码: class Solution { public: List

2020-11-11 22:32:53 251

原创 PigyChan_LeetCode 剑指 Offer 24. 反转链表

剑指 Offer 24. 反转链表难度简单定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <= 5000思路:(1)在反转过程中会修改指向下一节点指针,导致丢失下一节点的信息,所以要提供一个额外指针提前保存下一节点的信息。(2)在反转过程中需要指向自己的上一节点,所以要提

2020-11-11 22:31:58 263

原创 PigyChan_LeetCode 剑指 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.思路:快慢指针(1)快指针先行n步,慢指针随后跟上(2)等快指针到尾部时,慢指针所指即为倒

2020-11-11 22:30:58 180

原创 PigyChan_LeetCode 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

剑指 Offer 21. 调整数组顺序使奇数位于偶数前面难度简单输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums = [1,2,3,4]输出:[1,3,2,4]注:[3,1,2,4] 也是正确的答案之一。提示:1.1 <= nums.length <= 500002.1 <= nums[i] <= 10000思路:双指针(1)left,right指针分别指向nums的首尾

2020-11-11 22:29:29 70

原创 PigyChan_LeetCode 剑指 Offer 20. 表示数值的字符串

剑指 Offer 20. 表示数值的字符串难度中等请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、“5e2”、"-123"、“3.1416”、"-1E-16"、“0123"都表示数值,但"12e”、“1a3.14”、“1.2.3”、"±5"及"12e+5.4"都不是。思路:一,每个表示数值的字符串有如下三个部分(1)整数部分,一开始搜索的部分,(2)小数部分,当碰到’.‘后,开始搜索小数部分(3)指数部分,当碰到’e’或者’E’后考虑不合法情况:(1)

2020-11-11 22:27:03 134

原创 PigyChan_LeetCode 剑指 Offer 19. 正则表达式匹配

剑指 Offer 19. 正则表达式匹配难度困难请实现一个函数用来匹配包含’. ‘和’ * ‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’ * '表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但与"aa.a"和"ab*a"均不匹配。示例 1:输入:s = "aa"p = “a”输出: false解释: “a” 无法匹配 “aa” 整个字符串。示例 2:输入:s = "aa"p =

2020-11-11 22:22:23 116

原创 PigyChan_LeetCode 剑指 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 为正整数思路:(1)大数问题,使用数组来表示大数。(2)等等。。这返回的vector给我整蒙了。。意思是不存在大数问题咯代码: class Solution { pub

2020-11-11 22:13:32 94

原创 PigyChan_LeetCode 剑指 Offer 16. 数值的整数次方

剑指 Offer 16. 数值的整数次方难度中等实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:* -100.0 &lt

2020-11-06 22:03:40 91

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

剑指 Offer 15. 二进制中1的个数难度简单请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。示例 2:输入:00000000000000000000000010000000输出

2020-11-06 22:03:35 80

原创 PigyChan_LeetCode 剑指 Offer 14- I. 剪绳子

剑指 Offer 14- I. 剪绳子难度中等给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m-1] 。请问 k[0]k[1]…*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1示例 2:输入: 10输出: 36解释: 10 =

2020-11-06 22:03:29 112

原创 PigyChan_LeetCode 剑指 Offer 13. 机器人的运动范围

剑指 Offer 13. 机器人的运动范围难度中等地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?示例 1:输入:m = 2, n = 3, k

2020-11-04 16:39:40 186 1

原创 PigyChan_LeetCode 剑指 Offer 12. 矩阵中的路径

剑指 Offer 12. 矩阵中的路径难度中等请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。[[“a”,“b”,“c”,“e”],[“s”,“f”,“c”,“s”],[“a”,“d”,“e”,“e”]]但矩阵中不包含字符串“abfb”的路径,因

2020-11-04 16:38:28 115

原创 PigyChan_LeetCode 剑指 Offer 11. 旋转数组的最小数字

剑指 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思路:(1)使用二分法,利用该旋转数组中存在两段上升序列(2)通过mid值与left和right比较,判断查找范围的变化1.

2020-11-04 16:37:22 84

原创 PigyChan_LeetCode 剑指 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思路:1. f(2)=2,一次跳两格,两次跳一格2. f(n),第一次

2020-11-04 16:35:37 87

原创 PigyChan_LeetCode 剑指 Offer 10- I. 斐波那契数列

剑指 Offer 10- I. 斐波那契数列难度简单写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:1示例 2:

2020-11-04 16:34:08 120

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

剑指 Offer 09. 用两个栈实现队列难度简单用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )思路:(1)队列的两个动作,入队,出队1. 入队:向栈1压入2. 出队:若栈2为空,将当前栈一的所有元素压入栈2;若非空,栈2弹出顶部代码: class CQueue { public: CQ

2020-11-04 16:32:33 86

原创 PigyChan_LeetCode 剑指 Offer 07. 重建二叉树

剑指 Offer 07. 重建二叉树难度中等输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。限制:0 <= 节点个数 <= 5000思路:(1)前序遍历确定访问顺序,中序遍历决定左右子树成员(2)每个节点的构造在两个遍历序列都有选值范围1. 根节点的选值范围是全部,根节点在inorder的位置是index,根节点在preorder的位置是 02. 由此得出index左侧,即范围inorder[Instart,ind

2020-11-04 16:28:59 126

原创 PigyChan_LeetCode 剑指 Offer 06. 从尾到头打印链表

剑指 Offer 06. 从尾到头打印链表难度简单输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000思路:《栈》代码: class Solution { public: vector<int> reversePrint(ListNode* head) { ListNode* cur = head;

2020-11-04 16:26:53 116

原创 PigyChan_LeetCode 剑指 Offer 05. 替换空格

剑指 Offer 05. 替换空格难度简单请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = “We are happy.”输出:“We%20are%20happy.”限制:0 <= s 的长度 <= 10000思路1.0:(1)统计空格数,得出string最终长度(2)从后往前构造string,省去数次”把’ ‘替换成’%20’后进行移位排序的成本“代码1.0: class Solution { public: stri

2020-11-04 16:25:59 83

原创 PigyChan_LeetCode 剑指 Offer 03. 数组中重复的数字

剑指 Offer 03. 数组中重复的数字难度简单找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3限制:2 <= n <= 100000思路1.0:(1)利用数组下标,设下标为i,nums[i]为val(2)如果i==val,检测下一个(3

2020-11-04 16:24:16 62

原创 《Effective C++》笔记汇总_思维导图 chap9

9.杂项讨论下面是思维导图的截图,资源发在Github上了,需要的朋友自取《Effective C++》chap9 杂项讨论一些话儿本人水平有限,如果笔记中有错误或是遗漏的地方,还请大家体谅。这份笔记花了小生非常多的时间与精力,如果能帮到你对C++的学习,点个赞即可!...

2020-11-01 17:24:01 69

原创 《Effective C++》笔记汇总_思维导图 chap8

8.定制new和delete下面是思维导图的截图,资源发在Github上了,需要的朋友自取《Effective C++》chap8 定制new和delete一些话儿本人水平有限,如果笔记中有错误或是遗漏的地方,还请大家体谅。这份笔记花了小生非常多的时间与精力,如果能帮到你对C++的学习,点个赞即可!...

2020-11-01 17:23:53 85

空空如也

空空如也

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

TA关注的人

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