自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

记录学习

记录学习

  • 博客(32)
  • 收藏
  • 关注

原创 二叉树的镜像——《剑指offer》

题目描述 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 例如输入: 4 / \ 2 7 / \ / \ 1 3 6 9 镜像输出: 4 / \ 7 2 / \ / \ 9 6 31 示例 1: 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 限制: 0 <= 节点个数 <= 1000 代码实现 class Solution ...

2022-05-14 16:41:03 86

原创 顺时针打印矩阵——《剑指offer》

图的邻接链表法存储法 struct edgeNode { int adjver; //边指向终端结点的下标,vertex顶点,adjoin邻接 int weight; //权值 edgeNode*next; //指向下一边结点的指针 }; struct vertexNode { int data; //顶点上的数据域 int index; //顶点在图中数组的下标,例:0,1,2,3 edgeNode* first; //指向该顶点作为出发点的边链表 }; struc

2022-05-14 16:03:31 172

原创 包含main函数的栈——《剑指offer》

题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。 示例: MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.min(); --> 返回 -3. minStack.pop(); minStack.top(); -->...

2022-05-14 13:28:47 221

原创 合并两个排序的链表——《剑指offer》

题目描述 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 限制: 0 <= 链表长度 <= 1000 思想 每次从两个链表中选择头结点元素最小的那个结点作为合并后的根结点。 代码实现 class Solution { public: ListNode* mergeTwoLists(ListNode*

2022-05-08 15:36:16 101

原创 链表中入口结点——《剑指offer》

题目描述 给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。 数据范围:n\le10000n≤10000,1<=结点值<=100001<=结点值<=10000 要求:空间复杂度O(1)O(1),时间复杂度O(n)O(n) 例如,输入{1,2},{3,4,5}时,对应的环形链表如下图所示: 可以看到环的入口结点的结点值为3,所以返回结点值为3的结点。 输入描述: 输入分为2段,第一段是入环前的链表部分,第二段是链表环的部分...

2022-05-07 14:46:19 60

原创 反转链表——《剑指offer》

题目描述 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 限制: 0 <= 节点个数 <= 5000 思想 就是多设几个指针,分别表示当前结点,当前节点的前一个结点,当前结点的后一个结点,反转后的头结点。 代码实现 class Solution { public: List.

2022-05-07 14:02:39 250

原创 链表中倒数第k个结点——《剑指offer》

题目描述 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。 示例: 给定一个链表: 1->2->3->4->5, 和 k = 2. 返回链表 4->5. 思想 设置两个指针同时前进。 代码实现 class Solution { public: Li

2022-05-05 13:20:51 42

原创 调整数组顺序使奇数位于偶数前面——《剑指offer》

题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。 示例: 输入:nums =[1,2,3,4] 输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。 提示: 0 <= nums.length <= 50000 0 <= nums[i] <= 10000 C++实现 class Solution { public: vector<int> exch...

2022-05-03 17:34:53 161

原创 表示数值的字符串——《剑指offer》

题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。 数值(按顺序)可以分成以下几个部分: 若干空格 一个小数或者整数 (可选)一个'e'或'E',后面跟着一个整数 若干空格 小数(按顺序)可以分成以下几个部分: (可选)一个符号字符('+' 或 '-') 下述格式之一: 至少一位数字,后面跟着一个点 '.' 至少一位数字,后面跟着一个点 '.' ,后面再跟着至少一位数字 一个点 '.' ,后面跟着至少一位数字 整数(按顺序)可以分成以下几个部分: (可选)一个符...

2022-05-03 01:10:09 46

原创 正则表达式匹配——《剑指offer》

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

2022-05-01 19:55:46 54

原创 删除链表的结点——《剑指offer》

题目描述 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 注意:此题对比原题有改动 示例 1: 输入: head = [4,5,1,9], val = 5 输出: [4,1,9] 解释: 给定你链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9. 示例 2: 输入: head = [4,5,1,9], val = 1 输出: [4,5,9] 解释: 给定你链表中值为1的第三个节点,那么在调...

2022-04-30 17:07:37 57

原创 打印从1到最大的n位数——《剑指offer》

题目描述 输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。 示例 1: 输入: n = 1 输出: [1,2,3,4,5,6,7,8,9] 说明: 用返回一个整数列表来代替打印 n 为正整数 C++代码实现 class Solution { public: vector<int> printNumbers(int n) { vector<int> arr; .

2022-04-29 15:46:34 1705

原创 数字的整数次方——《剑指offer》

题目描述 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。 示例 1: 输入:x = 2.00000, n = 10 输出:1024.00000 示例 2: 输入:x = 2.10000, n = 3 输出:9.26100 示例 3: 输入:x = 2.00000, n = -2 输出:0.25000 解释:2-2 = 1/22 = 1/4 = 0.25 C++代码实现 class Solution { public: .

2022-04-28 15:37:06 1469

原创 二进制中1的个数——《剑指offer》

题目描述 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为 汉明重量).)。 提示: 请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。 在 Java 中,编译器使用 二进制补码 记法来表示有符号整数。因此,在上面的 示例 3 中,输入表示有符号整数 -3。 示例 1: 输入:n = 11 (控

2022-04-27 14:38:43 48

原创 剪绳子——《剑指offer》

问题描述 给你一根长度为 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 = 3 + 3 + 4, 3 × 3 ×

2022-04-26 14:57:29 41

原创 机器人的运动范围——《剑指offer》

题目描述 地上有一个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 = 1 输出:3 示例 2: 输入:m =

2022-04-25 14:12:25 58

原创 虚拟环境mkvirtualenv指令

创建虚拟环境: mkvirtualenv --python=版本文件路径 虚拟环境名 进入虚拟环境: workon 虚拟环境名 退出虚拟环境 离开 deactivate 删除(慎用) rmvirtualenv [虚拟环境名称]

2022-04-25 01:11:56 711

原创 矩阵中的路径

问题描述 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 例如,在下面的 3×4 的矩阵中包含单词 “ABCCED”(单词中的字母已标出)。 示例 1: 输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“

2022-04-24 16:36:27 978

原创 jupyter快捷键

命令行模式(按 Esc 生效) F : 查找并且替换 Ctrl-Shift-F : 打开命令配置 Ctrl-Shift-P : 打开命令配置 Enter : 进入编辑模式 P : 打开命令配置 Shift-Enter : 运行代码块, 选择下面的代码块 Ctrl-Enter : 运行选中的代码块 Alt-Enter : 运行代码块并且插入下面 Y : 把代码块变成代码 M : 把代码块变成标签 R : 清除代码块格式 1 : 把代码块变成heading 1 2 : 把代码块变成heading 2 3 :

2022-04-24 02:17:20 756

原创 旋转数组的最小元素——《剑指offer》

题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一次旋转,该数组的最小值为 1。 注意,数组 [a[0], a[1], a[2], ..., a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], ..., a[n-2]] 。

2022-04-23 16:53:57 844

原创 青蛙跳台阶问题——《剑指offer》

问题描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 示例 1: 输入:n = 2 输出:2 示例 2: 输入:n = 7 输出:21 示例 3: 输入:n = 0 输出:1 提示: 0 <= n <= 100 思想 从第三个台阶开始,每台阶可以从它的前一个台阶或者前两个台阶跳过去。那么这个台阶的跳法种数就是前两个个台阶

2022-04-22 14:52:36 1096

原创 数据结构图部分整理

#include <iostream> #include <algorithm> #include <iterator> using namespace std; #define MAX_VERTEX_NUM 10 struct Node { int adjvex; struct Node *next; int info; }; typedef struct VNode { char data; Node *first; }VNode, AdjLi.

2022-04-21 20:55:05 298

原创 斐波那契数列——《剑指offer》

题目描述 写一个函数,输入 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(1000000007),如计算初始结果为:1000000008,请返回 1。 示例 1: 输入:n = 2 输出:1 示例 2: 输入:n ...

2022-04-21 16:07:03 823

原创 用两个栈实现队列——《剑指offer》

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

2022-04-20 17:12:53 46

原创 数据结构二叉树部分整理

前序遍历递归算法 思想:前序遍历特点是“根 左 右” void preOrder(PNode T) { if (T == NULL) { return; } printf("%d ", T->val); preOrder(T->left); preOrder(T ->right); } 前序遍历的非递归算法 思想:可以根据先序遍历先访问根的特点实现。首先访问结点的数据,然后再分别将左右子孩子压入栈。 void s_preOrder(PNod

2022-04-20 15:56:53 581

原创 二叉树的下一个节点——《剑指offer》

题目描述:给定一个二叉树和其中一个节点,如何找出中序遍历的下一个节点?树中的节点除了有两个分别指向左、右子节点的指针,还有一个指向夫节点的指针。 思想:①当前节点有右子树时,则下一节点是右子树的最左节点。②当前节点没有右子树,但自己是父节点的左孩子时,则下一个节点是父节点。③当前结点既没有右孩子,自己又不是左孩子时,则找到第一个是左孩子的祖先节点,该节点的父亲结点就是下一个结点。④如果当前结点既没有右孩子,又不是左孩子,又没有父节点时,或没有作为左孩子的祖先节点时,则该结点是中序遍历的最后一个结点。 代

2022-04-19 13:53:37 928

原创 重建二叉树——《剑指offer》

题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 示例 1: Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7] Output: [3,9,20,null,null,15,7] 示例 2: Input: preorder = [-1], inorder = [-1] Output: [-1] 限制: 0 &lt.

2022-04-18 16:07:49 805

原创 从尾到头打印链表——《剑指offer》

题目描述: 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表长度 <= 10000 思想:遍历链表只能从头到尾,但可以利用栈的“先进后出”特点实现从尾到头输出数据。即先遍历一遍链表,将结点上的值按序压入栈中,然后再将栈中的元素依次出栈。 C++实现: /** * Definition for singly-linke..

2022-04-17 13:01:00 810

原创 替换空格——《剑指offer》

题目描述: 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s = "We are happy." 输出:"We%20are%20happy." 限制: 0 <= s 的长度 <= 10000 代码实现:这是时间复杂度为O(n)的实现。首先遍历一趟,确定替换后新数组的长度。然后分别从原始和新数组的末尾进行赋值,遇到空格就替换成%20。 class Solution { public: string re.

2022-04-16 17:02:09 699

原创 数组中重复的数——《剑指offer》

题目描述: 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3 限制: 2 <= n <= 100000 代码实现: class Solution { public: int findRe...

2022-04-15 17:21:04 670

原创 二维数组中的查找——《剑指OFFER》

二维数组中的查找——剑指OFFER

2022-04-14 17:25:00 361

原创 数据结构排序部分整理

数据结构排序算法

2022-04-14 15:40:25 492

空空如也

空空如也

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

TA关注的人

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