自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL读未提交级别究竟是否加锁

最近在学习MySQL的隔离级别问题,网上的大部分说法都是:读未提交级别下不加任何锁,然而又有资料指出:MySQL在四种隔离级别下都能防止丢失更新,这两种说法看起来互相矛盾,所以我实际测试并得出了结论:MySQL在读未提交隔离级别下的写操作是加了排它锁的,具体步骤如下:一、建立数据,本次要用到的仅为一条数据。二、编写好两个事务,设定隔离级别为读未提交,关闭事务的自动提交。三、事务一率先开启,试图将id为1的name字段更新为test1,注意由于设置好了关闭事务的自动提交,这里事务是尚未提交的状态。

2021-11-05 18:13:12 2401 14

原创 Leetcode笔记----剑指Offer68.Ⅱ.二叉树的最近公共祖先

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2021-10-24 10:14:50 156

原创 Leetcode笔记----剑指offer59.Ⅱ.队列的最大值

请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/dui-lie-de-zui-da-zhi-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。本题的思路是在类中定义两个队列,一个队列

2021-10-23 11:09:47 455

原创 Leetcode笔记----剑指Offer 54.二叉搜索树的第k大结点

给定一棵二叉搜索树,请找出其中第k大的节点。二叉搜索树的性质是:中序遍历递增序列。因此如果求第k大节点只需要把中序遍历反过来,先遍历右子树,再遍历左子树即可。代码如下class Solution { int res; int k; public int kthLargest(TreeNode root, int k) { this.k = k; find(root); return res; } v

2021-10-20 12:46:54 152

原创 Leetcode笔记----剑指Offer31.栈的压入、弹出序列

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof著作权归领扣网络所有。商业转载请联系官方授权,非

2021-10-16 23:46:51 126

原创 java笔记----%1e9+7和%1000000007的区别

有很多力扣题目因为数字过大,要求答案对1000000007(1e9+7)取模,但对1e9+7取模后得到的是浮点型,有时会导致返回值无法类型转换。这时直接对1000000007取模得到int型数据即可。

2021-10-16 19:16:05 2466

原创 Leetcode笔记----剑指Offer47.礼物的最大价值

在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/li-wu-de-zui-da-jie-zhi-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。此题一开始想拿dfs做,返回Ma

2021-10-15 10:07:04 100

原创 Leetcode笔记----剑指Offer46.把数字翻译成字符串

给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。乍一看,我的第一思路是回

2021-10-14 12:26:29 99

原创 Leetcode笔记----剑指offer35.复杂链表的复制

请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/fu-za-lian-biao-de-fu-zhi-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。显然题目想实现链表的深拷贝,和传统的链表复制不同处在于,传统的简单链表只有val和

2021-10-13 19:06:51 178

原创 Leetcode笔记----剑指Offer12.矩阵中的路径(由一道题看dfs+剪枝)

看到题目,又是经典的DFS问题,一般这种问题会单独写一个回溯函数,在主函数中调用回溯函数解决。回溯函数中也是经典的思路:首先判断边界条件,如果通过条件审核则判断是否满足返回条件,其次设置该位置的访问情况,然后进行回溯。重点是代码中的一些细节,所以先把标准代码附上。class Solution { public boolean exist(char[][] board, String word) { char[] words = word.toCharArray(); ..

2021-10-11 15:03:36 126

原创 Leetcode笔记----NC42有重复项数字的所有排列

描述给出一组可能包含重复项的数字,返回该组数字的所有排列。结果以字典序升序排列。本题又是一道典型的回溯思路题,所谓回溯就是往往一个目标状态达成后,需要退回到中间状态做不同选择,从而得到不同的目标状态。这种题目在代码中往往会伴随着递归出现,以这道题为基础,我理清了一下用到递归时应该思考的方向:只专注于某一次状态的实现并写代码,而不是尝试着思考整个递归逻辑,那样的话会越陷越深最后把自己绕晕。public class Solution { ArrayList<ArrayList<I

2021-10-06 20:56:23 402

原创 Leetcode笔记----括号生成

给出n对括号,请编写一个函数来生成所有的由n对括号组成的合法组合。例如,给出n=3,解集为:“((()))”, “(()())”, “(())()”, “()()()”, “()(())”本题需要用到回溯思路,构建完一个完整的括号序列后需要回溯到某个半成品状况,再改动括号的添加顺序以构建新的序列。回溯中的关键点是每个节点的右括号剩余数目不能少于左括号。public ArrayList<String> generateParenthesis (int n) { // w

2021-09-23 10:54:33 214

原创 LeetCode笔记----重排链表

分析题目,能看出要求是把原链表分为两部分,前一部分正序再和后半部分倒序连接,由此很容易想到栈,如果把后半链表用栈存储,再每次弹栈和前半部分连接就能实现。但转念一想,把后半链表直接反转再连接即可,根本用不到O(N)的空间,于是代码就变成了反转链表+拼接。需要注意的细节是:断开链表后前半部分链表的最后一个节点的next域要指向空,否则会造成循环链表,其次在拼接的过程中需要判断一个特殊条件:如果链表总长度为奇数那么最后前半链表先到空,该条件需要单独处理一下。 public void reorderList..

2021-09-17 20:56:21 133

原创 Leetcode笔记----链表内指定区间反转

将一个链表 m 位置到n 位置之间的区间反转,要求时间复杂度 O(n),空间复杂度 O(1)。反转链表能想到头插法,这道题也是类似的思路,和链表相关的题目需要注意细节,尤其是头插法的具体实现,主要分为3步和几个变量:首先是记录当前位置的cur指针,然后是记录反转区间之前,在整个循环中一直不动的pre指针,最后是cur之后的next指针,每次头插法的步骤如下:首先记录pre.next,将cur指针的next指向cur.next.next,将pre指针的next指向cur.next,最后将pre.next的

2021-09-15 13:36:39 351

原创 leetcode笔记----重建二叉树

给定某二叉树的前序遍历和中序遍历,请重建出该二叉树并返回它的头结点。在本科的数据结构课里经常会看到的题目,给定前序和中序遍历后重构二叉树,如果是用笔纸写的话很容易想明白:首先前序中的第一个节点就是树根,中序中该节点左面的都是其左子树,右面的都是右子树,接着再寻找。其实这个过程就是递归的过程,将改过程改为代码即可。import java.util.*;public class Solution { public TreeNode reConstructBinaryTree(int [] pr

2021-09-07 17:19:41 169

原创 leetcode笔记----NC8 二叉树根节点到叶子节点和为指定值的路径

给定一个二叉树和一个值 sum,请找出所有的根节点到叶子节点的节点值之和等于sum 的路径,由于是二叉树的题目,首先能想到递归dfs,从根节点开始遍历,并将节点值加入到一个临时列表中,当遍历到叶节点时判断当前列表中值的和,如果等于sum就将该临时列表加入结果中,并删除该叶节点值并回溯。 ArrayList<ArrayList<Integer>> res = new ArrayList<>(); public ArrayList<ArrayList&

2021-08-17 12:19:17 171

原创 Leetcode笔记----最长公共子序列Ⅱ

给定两个字符串str1和str2,输出两个字符串的最长公共子序列。如果最长公共子序列为空,则返回"-1"。目前给出的数据,仅仅会存在一个最长的公共子序列。本题和最长公共子串类似,区别在于两个字符串的最长公共子串是连续的,而序列是不连续的,因此同样是动态规划但状态转移方程不同。本题的dp[i][j]含义同样是字符串1的i位置到字符串2的j位置的最长子序列长度。显然当i为0或j为0时dp应该为0,而状态转移的情况是:当s1.charAt(i)=s2.charAt(j)时,dp[i][j]=dp[i-1][

2021-08-10 15:33:00 490

原创 Leetcode笔记----NC108.最大正方形

描述给定一个由’0’和’1’组成的2维矩阵,返回该矩阵中最大的由’1’组成的正方形的面积本题的思路是动态规划,因为数组中每个位置的面积依赖于其相邻位置的状态,那么难点其实在于动态规划数组中元素代表的含义。本题中元素的含义应为“以该位置为右下角的正方形的边长”,数组中具体每个元素的赋值规则如下:如果该元素在最上/最左或该元素为0,那么dp[i][j]就是他本身的值,如果该元素在数组中间且本身为1,则他的值是它左上、左边、上方三个位置的dp元素最小值+1。public class Solution {

2021-08-05 21:08:51 222

原创 leetcode笔记----NC17.最长回文子串

描述对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。给定字符串A以及它的长度n,请返回最长回文子串的长度。本题的回文子串长度和相邻字母息息相关,而且每个位置的子串长度都不相同,都可算作一个子状态,因此能够想到动态规划。但本题的转移方程和临界条件,以及dp数组的定义都比较需要动脑:首先,dp数组定义为二维的boolean型数组,也就是boolean dp[n][n],n为字符串长度,那么数组中的每个元素就代表从i到j能否构成回文串,如果能的话就是true,否则是初始化的空。有了动态

2021-08-03 11:55:35 315

原创 leetcode笔记----NC61.两数之和

给出一个整数数组,请在数组中找出两个加起来等于目标值的数,你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足 index1 小于index2.。注意:下标是从1开始的假设给出的数组中只存在唯一解例如:给出的数组为 {20, 70, 110, 150},目标值为90输出 index1=1, index2=2最容易想到的肯定是穷举法,同时可知时间复杂度是O(N²),不是很可取。那么根据经典的空间换时间原则,肯定有一种方法能够用申请的空间来换取时间,本题中这个

2021-07-30 12:58:50 253

原创 Leetcode笔记----NC29.二维数组中的查找

描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]给定 target = 7,返回 true。给定 target = 3,返回 false。一看到递增数组,首先想到的肯定是二分法。一维数组中的二分法好说,大了就往左找,小了就往右找,每次调整的方向容易确

2021-07-26 12:04:15 124

原创 Leetcode笔记----NC40 两个链表生成相加链表

假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。给定两个这种链表,请生成代表两个整数相加值的结果链表。例如:链表 1 为 9->3->7,链表 2 为 6->3,最后生成新的结果链表为 1->0->0->0。思路1:也是我想到的思路,用两个数据结构存储链表各节点的值,在相加时从后往前加,每次相加的和大于10就减10再保留一个进位,这个数据结构其实就是栈,满足后进先出的规则,但我是用list实现的。思路2:比较简单,其实思路1中我所

2021-07-24 18:21:00 225

原创 leetcode笔记----剑指offer36.两个链表的第一个公共节点

题目很简单,两个链表如果有公共节点就返回那个节点,没有就返回空。这里最简单也是最容易想到的方法当然是循环遍历:一个节点从链表A的头遍历到尾,每到一个新位置就扫描链表B看有没有公共节点,有就返回没有就继续遍历直到结尾。这样下来时间复杂度是O(N²),显然太高了。这时就会想到如果能用双指针遍历就好了,最好两个指针一起动,一起停,也就是说两个指针的起点距离两个链表的终点距离相等,这样若有公共节点也必是一起到达的。那么只要先遍历链表得到长度,再在长链表上先走几步达到相同起点就可以了。public class

2021-07-23 17:31:13 90

原创 leetcode笔记----102.二叉树的层序遍历

题目描述:给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。一般的二叉树层次遍历很简单,用一个队列存储节点,每次出队时将其子节点再入队即可,但本题需要返回一个List<List< Integer >>,也就是说要按照层次分层存储节点值。经过在纸上的比比划划,我得到的思路是:首先根节点入列表,然后维护两个列表,一个存储当前层,一个存储下一层,当当前层遍历完后,把下一层的节点导入当前层继续遍历。代码如下class Solution {

2021-07-14 16:11:42 89

原创 Leetcode笔记----11.盛最多水的容器

题目描述:给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/container-with-most-water著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。这道题题干看了好久才看懂

2021-06-09 20:19:36 121

原创 Leetcode笔记----46.全排列

给定一个 没有重复 数字的序列,返回其所有可能的全排列。这道题很好理解,如果自己在纸上写的话也很好写:比如把123写在纸上,然后1放在最前面,然后是2,3,然后把3拿掉,2拿掉,放3和2…这样反复地先写一个排列,拿掉几个数字再组成另一个排列,最终得到所有的排列情况,在算法中,这叫做“回溯法”。所谓回溯法,顾名思义就是在搜索过程中不停回溯,这样一看就和深度优先搜索有着千丝万缕的联系,而这道题目中的回溯法其实就是模拟了在纸上反复试错的过程:通过递归函数,其参数中包括当前深度/数组/结果数组/当前路径/数组

2021-03-26 10:18:14 94

原创 Leetcode笔记----417.太平洋大西洋水流

给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度。“太平洋”处于大陆的左边界和上边界,而“大西洋”处于大陆的右边界和下边界。规定水流只能按照上、下、左、右四个方向流动,且只能从高到低或者在同等高度上流动。请找出那些水流既可以流动到“太平洋”,又能流动到“大西洋”的陆地单元的坐标。某个点能否有一个路径通往边缘,又是深度优先搜索的问题,思路依旧常规:一个主循环遍历和一个辅助的dfs函数,本题由于要判断两种边界,因此设置了两个搜索函数,一个搜索能到达太平洋的节点,一个搜索大西洋的。搜索

2021-03-22 13:32:56 116

原创 Leetcode笔记----547.省份数量

有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。本题和岛屿最大面积问题一样,又是典型的搜索问题。我采取的方法是深度优

2021-03-21 13:37:24 165

原创 Leetcode笔记----695.岛屿的最大面积

给定一个包含了一些 0 和 1 的非空二维数组 grid 。一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。)这道题是经典的搜索题目,可以用dfs和bfs来解决,用dfs时对数组进行遍历,如果当前元素为1则开始搜索,且要把这个位置的数字变为0,防止重复搜索,我在一开始考虑思路的时候想到了这点但是没敢确认,

2021-03-20 12:42:10 114

原创 Leetcode笔记----540.有序数组中的单一元素

给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。又是有序数组的问题,所以理所当然地想到了二分法,但一般的二分法是给定了目标元素后在数组中寻找其出现位置,本题没有目标元素,知道的只是该元素的出现频率,如何使用二分法就成为了问题。实际上本题是用区间长度做文章:将数组中间的一对数剔除,然后观察两边剩下的元素个数,哪边长就说明单独的元素在哪边,在该区间内继续二分法即可,最终区间收敛到单个元素时该元素即是想要的值。话虽如此,本题的细节却非常多,要进行判断的条件有3、4个,

2021-03-16 15:11:44 121

原创 Leetcode笔记----81.搜索旋转排序数组Ⅱ

假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。虽然是旋转过的,但该数组仍然是由两个有序数组组成的,因此还是可以使用二分法,只不过二分法要判断在哪个区间内使用。通过观察我得到的规律是,以旋转点为界,两边是两个不同的有序数组,然后判断目标值与第二个数组末尾值的大小,来选择在哪个区间上二分查找。class So

2021-03-15 12:47:10 153

原创 Leetcode笔记----34.在排序数组中查找元素的首次、末次出现位置

给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。题目描述得十分清晰,同时思路也随之非常清晰:既然是排序数组,自然而然就会想到二分法。先根据二分法找到元素的出现位置,记为mid,然后从mid向前向后找到元素的最开始、最末尾出现位置。本题思路非常简单,但是二分法的细节实现上却有一些问题:一般的二分法条件设定都是left!=right,但本题要加上防止越界的条件。以下是代码:

2021-03-14 14:58:41 230

原创 Leetcode笔记----69.x的平方根

实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。根据题意,要求的是x的平方根向下取整的数,根据数学性质可以很容易想到二分法:将下边界初始化为1,上边界初始化为x,mid为二者加和-1除以2,让x➗mid得出sqrt,判断与mid的大小,若mid>sqrt则说明区间取大了,令上边界=mid-1,反之下边界等于mid+1,当mid=sqrt时返回mid。int mySqrt(int a){ i

2021-03-13 15:26:12 119

原创 Leetcode笔记----406.根据身高重建队列

输入:people = [[7,0],[4,4],[7,1],[5,0],[6,1],[5,2]]输出:[[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]]解释:编号为 0 的人身高为 5 ,没有身高更高或者相同的人排在他前面。编号为 1 的人身高为 7 ,没有身高更高或者相同的人排在他前面。编号为 2 的人身高为 5 ,有 2 个身高更高或者相同的人排在他前面,即编号为 0 和 1 的人。编号为 3 的人身高为 6 ,有 1 个身高更高或者相同的人排在他前面,即编号为 1

2021-03-12 13:59:40 120

原创 Leetcode笔记----452.用最少数量箭引爆气球

一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被引爆。可以射出的弓箭的数量没有限制。 弓箭一旦被射出之后,可以无限地前进。我们想找到使得所有气球全部被引爆,所需的弓箭的最小数量。输入:points = [[10,16],[2,8],[1,6],[7,12]]输出:2解释:对于该样例,x = 6 可以射爆 [2,8],[1,6] 两个气球,以及 x = 11

2021-03-11 14:26:13 166

原创 Leetcode笔记----665.非递减数列

给你一个长度为 n 的整数数组,请你判断在最多改变 1 个元素的情况下,该数组能否变成一个非递减数列。本题我在纸上写了几个用例之后得出了思路,从最开始的4,2,3 该题目把4变为2或1即可,即把最开始的大元素改为小元素;然后看用例5,7,1,8,本题是把中间的1变为7或8,即将小元素变为大元素。仔细想想,既然只能改变一个元素,那么无非是这两种改法。因此得出思路:遍历数组并发现逆序对,把小的改成大的试一次,大的改成小的再试一次,如两次都不能得到正确的数列那么该数列就变不了了。以下是我的初版代码,这版代码

2021-03-10 11:27:40 94

原创 操作系统笔记(二):进程和线程

任何操作系统的一个核心概念都是进程:正在运行的程序的一个抽象,它几乎是一切计算的基础。 2.1 process 现代计算机往往会同时进行多个操作,就在电脑开机之时,数以百计的进程就会启动来完成一些任务,在多程序系统中,CPU快速地在进程间切换,每个进程运行数十或数百毫秒不等,在任何时间点上,CPU都只能运行一个进程,只不过每个进程运行的时间很短,所以1秒内可能运行多个进程,给我们造成“同一时间多个进程运行”的假象。 2.1.1 process model 在进程模型...

2021-03-09 17:33:24 526

原创 Leetcode笔记----763.划分字母区间

今天依旧做了贪心算法的专题练习,本道题的描述为:字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。示例:S = “ababcbacadefegdehijhklij”则返回[9,7,8]本道题目我的思路为:既然相同字母不能出现在不同的片段中,则需要记录字母的最后出现位置,并形成一个区间,在此区间中的每一个字母的最后出现位置若大于第一个字母的最后出现位置,则区间延长,直到没有这种情况出现则一个区间结束。如:abca

2021-03-08 18:45:55 106

原创 计算机网络笔记(三):运输层

运输层位于应用层和网络层之间,主要协议包括TCP和UDP(面向有连接和无连接)。3.1 概述 运输层协议为不同主机上的应用进程间提供了逻辑通信(logic communication),在应用程序的角度来看,逻辑通信让运行不同进程的主机好像直连一样;这也就将主机间通过无数的链路、路由器相连接这一事实封装了起来,应用进程只需在运输层提供的逻辑通信功能上发送报文,而不用考虑实际上底层物理复杂链路。运输层把应用程序进程接收到的报文转换成运输层分组,又称为报文段(segment),在发送时传递给网络层..

2021-03-04 18:08:29 1276

原创 Leetcode笔记----435.无重叠区间

题目描述:给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/non-overlapping-intervals著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。本题也属于贪心算法的解决范围,但自己在做的时候没有想到贪心怎么用,用了最笨的遍历方法,设

2021-02-24 21:22:31 129

空空如也

空空如也

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

TA关注的人

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