- 博客(35)
- 收藏
- 关注
原创 Go语言学习笔记【10】 数据结构之单链表、双链表、循环链表
go实现单链表的头/尾部插入、删除,头尾元素的获取,判断元素是否包含,链表反转,循环链表及Josephus问题
2022-08-10 20:18:13 525
原创 Go语言学习笔记【3】 复杂数据类型
Go语言指针、数组、切片、map、结构体、接口、json序列化和反序列化、面向过程和面向对象编程、面向过程和面向对象实现家庭记账本
2022-07-28 03:24:55 522
原创 Go语言学习笔记【2】 基础语法
go语言流程控制(if/switch/for/break/continue)、函数(init函数、匿名函数、闭包、内建函数)、defer关键字、作用域、获取命令行参数
2022-01-13 23:12:17 255
原创 剑指offer:JZ53 表示数值的字符串
描述请实现一个函数用来判断字符串str是否表示数值(包括科学计数法的数字,小数和整数)。科学计数法的数字(按顺序)可以分成以下几个部分:1.若干空格2.一个整数或者小数3.(可选)一个 ‘e’ 或 ‘E’ ,后面跟着一个整数(可正可负)4.若干空格小数(按顺序)可以分成以下几个部分:1.若干空格2.(可选)一个符号字符(’+’ 或 ‘-’)3. 可能是以下描述格式之一:3.1 至少一位数字,后面跟着一个点 ‘.’3.2 至少一位数字,后面跟着一个点 ‘.’ ,后面再跟着至少一位数字
2021-10-14 01:21:57 123
原创 剑指offer:JZ54 字符流中第一个不重复的字符
描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。后台会用以下方式调用Insert 和 FirstAppearingOnce 函数string caseout = “”;1.读入测试用例字符串casein2.如果对应语言有Init()函数的话,执行Init() 函数3.循环遍历字符串里的每一个字符ch {Insert(ch);
2021-10-13 21:23:33 111
原创 剑指offer:JZ55 链表中环的入口结点
描述给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。数据范围: n≤1000。要求:空间复杂度 O(1),时间复杂度O(n)输入分为2段,第一段是入环前的链表部分,第二段是链表环的部分,后台将这2个会组装成一个有环或者无环单链表;返回链表的环的入口结点即可。而我们后台程序会打印这个节点/* public class ListNode { int val; ListNode next = null; ListNode(int val) {
2021-10-13 20:52:51 124
原创 剑指offer:JZ56 删除链表中重复的结点
描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/示例input1:{1,
2021-10-12 01:03:18 126
原创 剑指offer:JZ57 二叉树的下一个结点
描述给定一个二叉树其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的next指针。下图为一棵有9个节点的二叉树。树中从父节点指向子节点的指针用实线表示,从子节点指向父节点的用虚线表示/* TreeNode类的代码public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; TreeLinkNode next
2021-10-11 00:42:53 137
原创 剑指offer:JZ58 对称的二叉树
描述请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。/* TreeNode类的代码public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/示例input1:{8,6,6,5,
2021-09-14 03:16:01 121
原创 剑指offer:JZ59 按之字形顺序打印二叉树
描述给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)例如:给定的二叉树是{1,2,3,#,#,4,5},该二叉树之字形层序遍历的结果是[[1],[3,2],[4,5]]#mermaid-svg-UMTOlpGWrOK9JKNf .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#merma
2021-09-14 02:35:56 105
原创 剑指offer:JZ60 把二叉树打印成多行
描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。例如:给定的二叉树是{1,2,3,#,#,4,5},该二叉树多行打印层序遍历的结果是[[1],[2,3],[4,5]]/* TreeNode类的代码public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val =
2021-09-14 01:33:46 163
原创 剑指offer:JZ61 序列化二叉树
描述请实现两个函数,分别用来序列化和反序列化二叉树,不对序列化之后的字符串进行约束,但要求能够根据序列化之后的字符串重新构造出一棵与原二叉树相同的树。二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树等遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。二叉树的反序列化是指:根据某种遍历顺序得到的序列化字符串
2021-09-06 00:00:50 201
原创 剑指offer:JZ62 二叉搜索树的第k个结点
描述给定一棵二叉搜索树,请找出其中的第k小的TreeNode结点。示例input:{5,3,7,2,4,6,8},3output:4note:按结点数值大小顺序第三小结点的值为4 思路本题中求二叉搜索树的第k小结点,由于二叉搜索树的特点:左子树<根结点<右子树,因此只需要对二叉搜索树进行中序遍历即可。遍历的方法有:递归、栈等。1、递归递归常常用于树的遍历。中序遍历时,递归需要先遍历左子树,然后根节点,最后右子树。递归的出口是null(由于求第k小结点,因此这里没有直接把
2021-09-02 01:53:39 129
原创 剑指offer:JZ63 数据流中的中位数
描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。示例input:[5,2,3,4,1,6,7,0,8]output:5.00 3.50 3.00 3.50 3.00 3.50 4.00 3.50 4.00note:数据流里面不断吐出的是5,2,3...,则得
2021-09-02 00:51:23 171
原创 剑指offer:JZ64 滑动窗口的最大值
描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个:{[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,3,4,2,6,
2021-08-31 01:39:18 215
原创 剑指offer:JZ65 矩阵中的路径
描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 [abcesfcsadee] \begin{bmatrix} a & b & c &e \\ s & f & c & s \\ a & d & e& e\\ \end{bmatrix}\quad
2021-08-15 16:57:26 118
原创 剑指offer:JZ66 机器人的运动范围
描述地上有一个rows行和cols列的方格。坐标从 [0,0] 到 [rows-1,cols-1]。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于threshold的格子。 例如,当threshold为18时,机器人能够进入方格[35,37],因为3+5+3+7 = 18。但是,它不能进入方格[35,38],因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?范围:1 <= rows, cols<= 10
2021-08-15 15:08:00 225
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人