- 博客(69)
- 资源 (2)
- 收藏
- 关注
原创 leetcode刷题日记: 700. 二叉搜索树中的搜索
给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。例如,给定二叉搜索树: 4 / \ 2 7 / \ 1 3和值: 2你应该返回如下子树: 2 / \ 1 3在上述示例中,如果要找的值是 5,但因为没有节点值为 5,我们应该返回 NULL。来源:力扣(LeetCode)...
2021-11-26 08:59:49
229
原创 leetcode刷题日记: 583. 两个字符串的删除操作(java)
给定两个单词word1和word2,找到使得word1和word2相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。示例:输入: "sea", "eat"输出: 2解释: 第一步将"sea"变为"ea",第二步将"eat"变为"ea"来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/delete-operation-for-two-strings著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出...
2021-10-20 11:09:46
255
原创 leetcode刷题日记: 45. 跳跃游戏 II(java)
给你一个非负整数数组nums ,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。示例 1:输入: nums = [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳1步,然后跳3步到达数组的最后一个位置。示例 2:输入: nums = [2,3,0,1,4]输出: 2...
2021-10-15 17:24:46
1123
原创 leetcode刷题日记:38. 外观数列(python)
给定一个正整数 n ,输出外观数列的第 n 项。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定义的数字字符串序列:countAndSay(1) = "1"countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。前五项如下:1. 12. 113. 214. 12115. 111221第一项是数字 1描述前一项,这个数是 1 即...
2021-10-15 17:07:46
194
原创 leetcode刷题日记: 55. 跳跃游戏(java)
给定一个非负整数数组nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。示例1:输入:nums = [2,3,1,1,4]输出:true解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。示例2:输入:nums = [3,2,1,0,4]输出:false解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最...
2021-10-14 11:28:03
158
原创 leetcode刷题日记: 213. 打家劫舍 II(java)
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。示例1:输入:nums = [2,3,2]输出:3解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为.
2021-10-14 11:00:14
107
原创 leetcode刷题日记: 剑指 Offer II 069. 山峰数组的顶部(python)
符合下列属性的数组 arr 称为 山峰数组(山脉数组) :arr.length >= 3存在 i(0 < i< arr.length - 1)使得:arr[0] < arr[1] < ... arr[i-1] < arr[i]arr[i] > arr[i+1] > ... > arr[arr.length - 1]给定由整数组成的山峰数组 arr ,返回任何满足 arr[0] < arr[1] < ... arr[i - 1] .
2021-10-14 10:39:27
140
原创 leetcode刷题日记: 79. 单词搜索(java)
给定一个m x n 二维字符网格board 和一个字符串单词word 。如果word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例 1:输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED"输出:true示例 ...
2021-10-13 14:57:56
116
原创 leetcode刷题日记: 22. 括号生成(python)
数字 n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。有效括号组合需满足:左括号必须以正确的顺序闭合。示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:输入:n = 1输出:["()"]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/generate-parentheses著作权归领扣网络所有。商业.
2021-10-13 11:14:14
148
原创 leetcode刷题日记:17. 电话号码的字母组合(python)
给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits = "23"输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]示例 2:输入:digits = ""输出:[]示例 3:输入:digits = "2"输出:["a","b","c"]来源:力扣(LeetCode)链接:http...
2021-10-13 10:29:13
133
原创 leetcode刷题日记:547. 省份数量(java)
有n个城市,其中一些彼此相连,另一些没有相连。如果城市a与城市b直接相连,且城市b与城市c直接相连,那么城市a与城市c间接相连。省份是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个n x n的矩阵isConnected,其中isConnected[i][j] = 1表示第i个城市和第j个城市直接相连,而isConnected[i][j] = 0表示二者不直接相连。返回矩阵中省份的数量。示例 1:输入:...
2021-10-08 14:49:06
221
原创 leetcode刷题日记:200. 岛屿数量(python)
给你一个由'1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"]]输出:1示例 2:输入:grid = [...
2021-10-08 13:25:08
155
原创 leetcode刷题日记:414. 第三大的数(python)
给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。示例 1:输入:[3, 2, 1]输出:1解释:第三大的数是 1 。示例 2:输入:[1, 2]输出:2解释:第三大的数不存在, 所以返回最大的数 2 。示例 3:输入:[2, 2, 3, 1]输出:1解释:注意,要求返回第三大的数,是指在所有不同数字中排第三大的数。此例中存在两个值为 2 的数,它们都排第二。在所有不同数字中排第三大的数为 1 。来源:力扣(LeetCode)链接:h
2021-10-06 17:02:55
169
原创 leetcode刷题日记:15. 三数之和
请你设计一个迭代器,除了支持 hasNext 和 next 操作外,还支持 peek 操作。实现 PeekingIterator 类:PeekingIterator(int[] nums) 使用指定整数数组 nums 初始化迭代器。int next() 返回数组中的下一个元素,并将指针移动到下个元素处。bool hasNext() 如果数组中存在下一个元素,返回 true ;否则,返回 false 。int peek() 返回数组中的下一个元素,但 不 移动指针。示例:输入:[".
2021-10-05 16:47:17
107
原创 leetcode刷题日记:82. 删除排序链表中的重复元素 II
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中没有重复出现的数字。返回同样按升序排列的结果链表。示例 1:输入:head = [1,2,3,3,4,4,5]输出:[1,2,5]示例 2:输入:head = [1,1,1,2,3]输出:[2,3]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-duplicates-from-so...
2021-10-05 12:09:46
113
原创 numpy pandas基础知识笔记12.pandas plot画图
plotseries例:import pandas as pdimport numpy as npimport matplotlib.pyplot as pltdata = pd.Series(np.random.randn(1000),index = np.arange(1000))data = data.cumsum()data.plot()plt.show()输出:输出DataFrame类型例:import pandas as pdimport nu.
2021-05-13 14:17:55
153
原创 numpy pandas基础知识笔记11.pandas合并merge
merge的使用例:left = pd.DataFrame({'key':['k0','k1','k2','k3'], 'A':['A0','A1','A2','A3'], 'B':['B0','B1','B2','B3']})right = pd.DataFrame({'key':['k0','k1','k2','k3'], 'C':['C0','C1','C2','C3...
2021-05-13 12:04:14
196
原创 numpy pandas基础知识笔记10.pandas合并concat
通过concat来进行DataFrame的合并例:import pandas as pdimport numpy as npdf1 = pd.DataFrame(np.ones((3,4))*0,columns = ['a','b','c','d'])df2 = pd.DataFrame(np.ones((3,4))*1,columns = ['a','b','c','d'])df3 = pd.DataFrame(np.ones((3,4))*2,columns = ['a','b','c'
2021-05-13 09:13:45
101
原创 numpy pandas基础知识笔记9.pandas导入导出
使用read_csv来读取csv文件例:import pandas as pddata = pd.read_csv('student.csv')print(data)输出: ID Name Age Gender0 1000 Dick 20 Male1 1001 Kelly 21 Female2 1002 Sasha 19 Female3 1003 Tom 21 Male4 10...
2021-05-12 21:09:11
76
原创 numpy pandas基础知识笔记8.pandas处理丢失数据
np.nan设置为丢失的数据例:import pandas as pdimport numpy as npdates = pd.date_range('20210101',periods=6)df = pd.DataFrame(np.arange(24).reshape((6,4)),index = dates,columns = ['a','b','c','d'])df.iloc[0,1] = np.nandf.iloc[1,2] = np.nanprint(df)输出: ..
2021-05-12 20:02:04
74
原创 numpy pandas基础知识笔记7.pandas选择数据
选择指定某一列的数据例:import pandas as pdimport numpy as npdates = pd.date_range('20210101',periods=6)df = pd.DataFrame(np.random.randn(6,4),index = dates,columns = ['a','b','c','d'])print(df['a'])输出:2021-01-01 -0.4158022021-01-02 0.4903482021-01-...
2021-05-12 16:51:19
568
原创 numpy pandas基础知识笔记 6.pandas基本
与numpy不同,pandas类似于字典的一个形式例子:import pandas as pdimport numpy as nps = pd.Series([1,3,6,np.nan,44,1])print(s)0 1.01 3.02 6.03 NaN4 44.05 1.0dtype: float64
2021-05-12 15:51:06
85
原创 numpy pandas基础知识笔记 5.copy
等号赋值相当于指针例:import numpy as npA = np.arange(4)B = AC = AD = BA[0] = 11//A改变相当于B改变输出:B is A//比较地址Out[52]: Truecopy为深拷贝,只是赋值没有关联例:import numpy as npA = np.arange(4)B = A.copy()A[0] = 11print(A)print(B)输出:[11 1 2 3][0 1 2 3]...
2021-05-10 23:00:42
71
原创 numpy pandas基础知识笔记 4.array的分割
使用np.split对array进行一个分割例:import numpy as npA = np.arange(12).reshape(3,4)print(A)print(np.split(A,2,axis=1))//对A列方向分割为两个array输出:[[ 0 1 2 3][ 4 5 6 7][ 8 9 10 11]][array([[0, 1], [4, 5], [8, 9]]), array([[ 2, 3], ...
2021-05-10 20:51:03
243
原创 numpy pandas基础知识笔记 3.array的合并
垂直合并使用np.vstack()例:A=np.array([1,1,1])B=np.array([2,2,2])print(np.vstack((A,B)))输出:[[1 1 1][2 2 2]]
2021-05-09 23:56:54
410
原创 numpy pandas基础知识笔记 2.numpy的基础运算
矩阵减法例:import numpy as npa = np.array([10,20,30,40])b = np.arange(4)c = a-bprint(c)输出:[10 19 28 37]加法例:import numpy as npa = np.array([10,20,30,40])b = np.arange(4)c = a+bprint(c)输出:[10 21 32 43]乘法类似用np.sin(x)来对矩阵x里的所有元素进行sin运..
2021-05-07 21:45:09
222
原创 numpy pandas基础知识笔记 1.numpy创建array
import numpy as npa = np.array([2,3,4],dtype=np.int)//dtype为array内的元素类型print(a.dtype)通过np.zeros((x,y))创建x行y列的0矩阵b = np.zeros((3,4))//三行四列类似的有ones、empty等通过 np.arrange(a,b,c)来创建从a到b步长为c的矩阵c = np.arange(10,20,2)输出[10 12 14 16 18]通过re...
2021-05-07 10:05:48
405
原创 leetcode刷题日记:145. 二叉树的后序遍历
给定一个二叉树,返回它的 后序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [3,2,1]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。迭代classSolution{public:vector<...
2021-03-10 21:39:51
117
原创 leetcode刷题日记:94. 二叉树的中序遍历
给定一个二叉树的根节点 root ,返回它的 中序遍历。示例 1:输入:root = [1,null,2,3]输出:[1,3,2]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[2,1]示例 5:输入:root = [1,null,2]输出:[1,2]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/bi..
2021-03-10 20:40:49
142
原创 leetcode刷题日记:102. 二叉树的层序遍历
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层序遍历结果:[ [3], [9,20], [15,7]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal著作...
2021-03-10 13:52:53
76
原创 leetcode刷题日记:135. 分发糖果
老师想给孩子们分发糖果,有 N个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。相邻的孩子中,评分高的孩子必须获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?示例1:输入: [1,0,2]输出: 5解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。示例2:输入: [1,2,2]输出: 4解释: 你可以分别给这三个孩子分发 1、2、1 颗糖果。 第三...
2020-12-24 16:23:53
164
1
原创 leetcode刷题日记:144. 二叉树的前序遍历
给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层序遍历如下:[ [3], [20,9], [15,7]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-zigzag-le...
2020-12-22 11:31:45
146
原创 JUC个人学习笔记19---各种锁的理解
根据b站UP主狂神说JUC课程所写的个人学习笔记视频地址:https://www.bilibili.com/video/BV1B7411L7tE?from=search&seid=147615033930317940751.公平锁/非公平锁公平锁:非常公平,不能插队,先来后到非公平锁:可以插队(默认)public ReentrantLock() { sync = new NonfairSync();}public ReentrantLock(boolean.
2020-09-15 19:58:23
127
原创 JUC个人学习笔记18---原子引用
根据b站UP主狂神说JUC课程所写的个人学习笔记 视频地址:https://www.bilibili.com/video/BV1B7411L7tE?from=search&seid=14761503393031794075解决aba问题,引入原子引用带版本号的原子操作public class CASDemo { //cas 比较并交换//Integer public static void main(String[] args) {// .
2020-09-15 13:01:08
165
原创 JUC个人学习笔记17---CAS
根据b站UP主狂神说JUC课程所写的个人学习笔记 视频地址:https://www.bilibili.com/video/BV1B7411L7tE?from=search&seid=14761503393031794075什么是casCAS是英文单词Compare and Swap的缩写,翻译过来就是比较并替换。CAS机制中使用了3个基本操作数:内存地址V,旧的预期值A,要修改的新值B。更新一个变量的时候,只有当变量的预期值A和内存地址V当中的实际值相同时,才会将内存地址V对
2020-09-15 12:33:23
99
原创 JUC个人学习笔记16---单例模式
根据b站UP主狂神说JUC课程所写的个人学习笔记视频地址:https://www.bilibili.com/video/BV1B7411L7tE?from=search&seid=14761503393031794075饿汉式,懒汉式饿汉式public class Hungry { //可能会浪费空间 private byte[] data1 = new byte[1024*1024]; private Hungry(){ } privat
2020-09-15 12:06:59
114
原创 JUC个人学习笔记15---Volatile
根据b站UP主狂神说JUC课程所写的个人学习笔记视频地址:https://www.bilibili.com/video/BV1B7411L7tE?from=search&seid=147615033930317940751.保证可见性public class JMMDemo { //不加volatile程序就会死循环 //加volatile保证可见性 private volatile static int num = 0; public static.
2020-09-15 08:49:09
138
原创 JUC个人学习笔记14---JMM
根据b站UP主狂神说JUC课程所写的个人学习笔记视频地址:https://www.bilibili.com/video/BV1B7411L7tE?from=search&seid=14761503393031794075请你谈谈对volatile的理解volatile是java虚拟机提供的轻量级的同步机制1.保证可见性2.不保证原子性3.禁止指令重排什么是JMMJMM:java内存模型,不存在的东西,概念关于JMM的一些同步的约定:1.线程解锁前,必须把.
2020-09-14 11:35:26
164
原创 JUC个人学习笔记13---异步回调
根据b站UP主狂神说JUC课程所写的个人学习笔记视频地址:https://www.bilibili.com/video/BV1B7411L7tE?from=search&seid=14761503393031794075Future设计的初衷是对将来的某个事件建模//异步调用: CompletableFuture//成功回调//失败回调public class Demo01 { public static void main(String[] args) throw.
2020-09-14 10:56:43
118
原创 JUC个人学习笔记12--ForkJoin
根据b站UP主狂神说JUC课程所写的个人学习笔记 视频地址:https://www.bilibili.com/video/BV1B7411L7tE?from=search&seid=14761503393031794075Forkjoin在jdk1.7,并行执行任务,提高效率,大数据量大数据:Map Reduce(把大任务拆分为小任务)Forkjoin特点:工作窃取维护的都是双端队列Forkjoin//求和计算//3 6(forkjoin) 9 (stre
2020-09-14 10:32:08
182
基于winform的xml菜单编辑器(c#源码)
2018-11-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人