baobao1767640830
码龄6年
关注
提问 私信
  • 博客:17,977
    社区:5
    17,982
    总访问量
  • 33
    原创
  • 1,161,319
    排名
  • 5
    粉丝
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:陕西省
  • 加入CSDN时间: 2018-09-16
博客简介:

baobao1767640830的博客

查看详细资料
  • 原力等级
    领奖
    当前等级
    0
    当前总分
    12
    当月
    0
个人成就
  • 获得15次点赞
  • 内容获得2次评论
  • 获得25次收藏
创作历程
  • 1篇
    2024年
  • 46篇
    2020年
  • 1篇
    2019年
成就勋章
TA的专栏
  • lecode刷题
    13篇
  • 数据结构
    3篇
  • C++第一天
  • Python学习第一天
  • Python
  • C++学习
    14篇
  • Linux
    16篇
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

【无标题】

一级##二级。
原创
发布博客 2024.10.19 ·
95 阅读 ·
3 点赞 ·
0 评论 ·
0 收藏

二叉树的直径

二叉树的解题技巧是,首先判断问题能否划分为子问题、应当划分为什么样的子问题。二叉树直径实际上就是二叉树中的最长路径,我们是可以划分出子问题的:二叉树的最长路径=max{左子树的最长路径,右子树的最长路径,经过根结点的最长路径}其中左子树的最长路径和右子树的最长路径是两个可以递归求解的子问题,那么经过根结点的最长路径如何计算呢?是左子树的深度加上右子树的深度。代入上面的式子得到:二叉树的最长路径=max{左子树的最长路径,右子树的最长路径,左子树的深度+右子树的深度}子树的最大直径、子树的最大深度。这
原创
发布博客 2020.06.03 ·
367 阅读 ·
0 点赞 ·
1 评论 ·
2 收藏

腐烂的橘子

DFS(深度优先搜索)和 BFS(广度优先搜索)。它们各有不同的适应场景。题目要求:返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。实际上就是求腐烂橘子到所有新鲜橘子的最短路径。那么这道题使用 BFS,应该是毫无疑问的了这道题的主要思路是:1.一开始,我们找出所有腐烂的橘子,将它们放入队列,作为第 0 层的结点。2.然后进行 BFS 遍历,每个结点的相邻结点可能是上、下、左、右四个方向的结点,注意判断结点位于网格边界的特殊情况。3.由于可能存在无法被污染的橘子,我们需要记录新鲜橘子的数量。
原创
发布博客 2020.06.03 ·
216 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

II 和为S的连续正数序列

了解滑动窗口:滑动窗口可以看成数组中框起来的一个部分。在一些数组类题目中,我们可以用滑动窗口来观察可能的候选结果。当滑动窗口从数组的左边滑到了右边,我们就可以从所有的候选结果中找到最优的结果。对于这道题来说,数组就是正整数序列 。我们设滑动窗口的左边界为 i,右边界为j ,则滑动窗口框起来的是一个左闭右开区间 。注意,为了编程的方便,滑动窗口一般表示成一个左闭右开区间。在一开始,i=1,j=1.滑动窗口位于序列的最左侧,窗口大小为零.滑动窗口的重要性质是:窗口的左边界和右边界永远只能向右移动,而不能
原创
发布博客 2020.06.02 ·
202 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

旋转数组问题

先将整个数组反转,再将数组的前后两半(前 k 个数和后 k 个数)分别反转,就可以实现数组的旋转了。三次反转(reverse)操作的过程如下图所示:public void rotate(int[] nums, int k){ int N = nums.length; reverse(nums, 0, N); reverse(nums, 0, k); reverse(nums, k, N);};void reverse(int[] nums, int begin, in
原创
发布博客 2020.06.02 ·
185 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

链表排序

总体思想为以上三部分。下面分别讲述:1.划分:这个操作实际上可以拆分为两个基本操作:a.寻找链表的中点b.删除链表中点左侧的指针,将链表断开寻找链表中点的操作,我们在链表快慢指针的文章中讲过,使用一快一慢两个指针遍历链表即可。删除链表指针,实际上和删除链表结点类似。我们在链表遍历框架的文章中讲过,使用相邻的两个指针一同遍历链表即可。ListNode split(ListNode head){ ListNode fast = head; ListNode slow = he.
原创
发布博客 2020.06.01 ·
119 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

判断链表中是否存在环

如果链表中不存在环的话,快指针则不会和慢指针指向同一个结点,而是会走到链表结尾。依照这个思路我们可以得到以下的题解代码public boolean hasCycle(ListNode head){ ListNode fast = head; ListNode slow = head; while (fast != null && fast.next != null) { fast = fast.next.next; slow = s
原创
发布博客 2020.05.31 ·
138 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

寻找链表的倒数第 k 个元素

思路:快慢指针,两个指针速度相同,只是间隔一定距离。快指针先前进 k个元素,然后两个指针同样速度前进。这样当快指针到达链表尾部时,慢指针正好到达链表的倒数第k 个元素public ListNode removeNthFromEnd(ListNode head, int k){ ListNode fast = head; for(int i = 0; i < k; i++){ fast=fast.next; } ListNode curr = head;
原创
发布博客 2020.05.31 ·
140 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

寻找链表中点

链表数据类型的特点决定了它只能单向顺序访问,而不能逆向遍历或随机访问(按下标访问)。很多时候,我们需要使用快慢指针的技巧来实现一定程序的逆向遍历,或者减少遍历的次数。这就是为什么快慢指针常用于链表问题。快指针一次前进两个结点,速度是慢指针的两倍。这样当快指针到达链表尾部时,慢指针正好到达的链表的中部。过程如下方动图所示。public ListNode middleNode(ListNode head) { ListNode fast = head; ListNode slow = h
原创
发布博客 2020.05.30 ·
499 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

盛最多水的容器

如果选择固定一根柱子,另外一根变化,水的面积会有什么变化吗?推测结论:1.当前柱子是最两侧的柱子,水的宽度 为最大,其他的组合,水的宽度都比这个小。左边柱子较短,决定了水的高度为 3。2.如果移动左边的柱子,新的水面高度不确定,一定不会超过右边的柱子高度 7。3.如果移动右边的柱子,新的水面高度一定不会超过左边的柱子高度 3,也就是不会超过现在的水面高度结论:由此可见,如果固定左边的柱子,移动右边的柱子,那么水的高度一定不会增加,且宽度一定减少,所以水的面积一定减少。这个时候,左边的柱子和任意.
原创
发布博客 2020.05.30 ·
153 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

给定一个已按照升序排列的有序数组,找到两个数使得它们相加之和等于目标数(不可以重复使用同一个数)

有序这个条件,你可能首先想到的是二分查找。但是仔细一想,需要固定一个数,对另一个数进行二分查找样时间复杂度是较高。使用双指针解法:public int[] twoSum(int[] nums, int target) {int i=0;int j=nums.length-1; while(i<j){ int sum=nums[i]+nums[j]; if(sum < target){ i++; } else if((sum >
原创
发布博客 2020.05.28 ·
1368 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

回溯算法

二叉树的遍历过程:以 Path Sum 为例为了最终输出所有可能的路径,我们需要在遍历时记录当前路径,当发现路径满足条件时,就将路径保存下来。路径遍历的顺序实际上就是 DFS 的顺序。当 DFS 进入一个结点时,路径中就增加一个结点;当 DFS 从一个结点退出时,路径中就减少一个结点。下面的 GIF 动图展示了这个过程。回溯算法的递归与遍历策略回溯(backtracking) 实际上就是“撤回一步”的意思。而在二叉树的 DFS 遍历中,从一个结点退出就是一种回溯。回溯法和 DFS 是息息相关的。例如
原创
发布博客 2020.05.27 ·
291 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

给定一个二叉树和一个目标和,判断该树中是否存在根结点到叶结点的路径

题目:给定一个二叉树和一个目标和,判断该树中是否存在根结点到叶结点的路径,这条路径上所有结点值相加等于目标和。返回 true 或者 false。1.了解二叉树的遍历框架说到二叉树的遍历框架,很多人的脑海里立马蹦出来的就是前序、中序和后序遍历。但是机械地记住前中后序遍历没有太大意义,我们首先要掌握的是二叉树的递归思想递归有两大要点:反复调用自身终止条件二叉树结构上进行递归,则这两大要点变为:递归调用自己两个子树在叶结点处终止递归调用子树的部分是重点。我们需要保证在子树上求解的是与原问题相同
原创
发布博客 2020.05.26 ·
2617 阅读 ·
1 点赞 ·
0 评论 ·
5 收藏

反转一个单链表

1.单链表这样一个相对“简陋”的数据结构,实际上就是为了考察面试者指针操作的基本功。2.如何才能简洁明了地解决单链表问题呢?实际上很多链表题目都是类型化的,都可以归结为链表的遍历,以及在遍历中做插入和删除操作。我们可以使用链表遍历的框架来解题a.了解链表遍历框架:当删除链表结点时,既需要访问当前结点,也需要访问前一个结点。既然这样,我们不妨使用两个指针来遍历链表,curr 指针指向当前结点,prev 指针指向前一个结点。这样两个指针的语义明确,也让你写出的代码更易理解。b.单步操作是“反转 pre
原创
发布博客 2020.05.26 ·
170 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux的文件操作命令

修改文件时间或创建新文件——touch命令格式touch [参数选项] 文件名例子:新建一个空的文件并查看时间命令参数1)-a 或–time=atime或–time=access或–time=use:仅更改访问时间。2)-c 或–no-create :仅修改文件时间,不创建任何文档3)-m 或–time=mtime或–time=modify :只更改变动时间。查看文件的时间参数 :注:A、modification time(mtime):更新文件的修改时间.。B、access ti
转载
发布博客 2020.05.22 ·
156 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

静态库和动态库

静态库静态库的命名方式:“libxxx.a”,其中“xxx”为库名,库名前加“lib”,后缀用“.a”工作过程 :在编译过程中,静态库的所有数据都被载进目标文件里。程序运行的时候就不再需要静态库优点 :编译后的执行程序不需要外部函数库支持缺点 :1.静态函数库编译成的文件占用的内存比较大。2.当静态库改变时,程序必须重新编译静态库的生成与使用命令介绍静态库的生成和使用过程中需要用到ar命令。ar是Linux系统的一个备份压缩命令,用于创建、修改备存文件(archive),或从备存文件
原创
发布博客 2020.05.22 ·
205 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

硬连接和软连接

Linux下的两种连接文件及创建方式在Linux下面的连接文件有两种——软连接和硬连接,虽然都是连接文件,但两者却有很大的区别:一种是类似于Windows的快捷方式功能的文件(或目录),这种连接称为软连接;另一种则是通过文件系统的inode连接来产生新文件名,而不是产生新文件,这种称为硬连接创建连接文件的方法非常简单,就是使用ln命令,ln file1 file2,则创建硬连接,file2为file1的硬连接,ln -s file1 file2,则创建软连接,file2为file1的软连接。详述硬
转载
发布博客 2020.05.21 ·
805 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

数据流重定向

数据流重定向概念在说数据流重定向之前,先来说说数据流的概念吧。数据流分为三种:标准输入(stdin),标准输出(stdout)和标准错误输出(stderr)。简单来说,标准输出指的是命令执行所回传的正确信息,而标准错误输出指的是命令执行失败后,所回传的错误信息。这些信息默认是打印在屏幕上的什么时数据流重定向呢?从字面上理解就是改变数据流的流向,使之流向指定的文件或设备。例如,把执行命令所回传的正确信息(标准输出信息)流向一个文件,而将所回传的错误信息(标准错误输出)流向别一个文件,并把这两个文件的信
原创
发布博客 2020.05.21 ·
434 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

linux环境变量

环境变量的概念含义:环境变量一般是指操作系统中指定操作系统运行环境的一些参数。它相当于一个指针,想要查看变量的值,需要加上“$”。分类:按作用的范围分类:在Linux中的变量,可以分为环境变量和本地变量:1)环境变量:相当于全局变量,存在于所有的Shell中,具有继承性;2)本地变量:相当于局部变量只存在当前Shell中,本地变量包含环境变量,非环境变量不具有继承性。按生存周期分类:1)永久:需要修改配置文件,变量永久生效;2)暂时:使用export定义,关闭Shell后失效。环境变量的
转载
发布博客 2020.05.21 ·
347 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

LINUX进程状态

两状态进程模型在任何时刻,一个进程要么正在执行,要么没有执行,因而可以构成最简单的模型。一个进程可以处于以下两种状态之一:运行态或未运行态。在任何一种情况下,分配器都会从队列中选择一个进程来执行。进程的创建和终止进程创建的原因:(1)新的批处理作业;(2)交互登录;(3)操作系统因为提供一项服务而创建;(4)由现有的进程派生。一个应用程序进程可以产生另一个进程,以接收应用程序产生的数据,并将数据组织成适合以后分析的格式。当一个进程派生另一个进程时,前一个称为父进程,被派生的进程称做子进程
原创
发布博客 2020.05.21 ·
483 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏
加载更多