- 博客(68)
- 收藏
- 关注
原创 【Java学习-00】学习计划
前一段时间一直在写毕业论文和找工作,最后签了某行的软开,所以后面接触算法就少之又少了,因为工作的需求,打算在工作前提前学习一下java,自己也有C++、C和python的基础,不过研究生阶段Python用的居多,前两个已经忘得差不多了,趁着时间还是比较充裕,所以想地毯式的学习一下java。
2023-04-14 23:56:16
319
1
原创 剑指 Offer II 105. 岛屿的最大面积
走过的路变为0Python 递归 + dfs + 全局变量记录岛屿面积类似计算岛屿数量题,这次只不过是每次1置0之后岛屿面积++
2022-08-25 20:06:17
202
原创 剑指Offer 06. 从尾到头打印链表
反转一个数组,a[::-1]stack是标准库中的一个容器适配器,是个类模板,使用的时候需要实例化,int是模板实参。声明了1个存储int型元素的栈,栈名是st。C++中s.empty()作为判断容器是否为空的函数push_back是编程语言里面的一个函数名。如c++中的vector头文件里面就有这个push_back函数,在vector类中作用为在vector尾部加入一个数据。top()函数的作用是:返回栈顶元素的值。(只是返回,但不弹出)pop()弹出栈顶。...
2022-08-04 22:17:22
302
原创 剑指Offer05-替换空格
在Python和Java等语言中,字符串都被设计成「不可变」的类型在C++语言中,string被设计成「可变」的类型,因此可以在不新建字符串的情况下实现原地修改“”.join(res),join()方法用于将序列中的元素以指定的字符连接生成一个新的字符串。...
2022-07-27 22:32:37
1858
原创 剑指 Offer 04. 二维数组中的查找
每日几道leetcode刷刷题!JZ-Offer04在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解法1:直接暴力,但显然这不好,不够高效啊,没有充分利用题目的条件(递增)选一个标志数,矩阵的 “左下角” 和 “右上角” 元素左下角选择右上角时,要注意,如果是空数组的时,是没有len(matrix[0])的,但是可以有len(matrix),所以需要对matr
2022-07-19 12:38:06
1676
原创 701. 二叉搜索树中的插入操作
701. 二叉搜索树中的插入操作每日几道leetcode刷刷题!传送门题目描述给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回 任意有效的结果 。示例 1:代码在迭代法遍历的过程中,需要记录一下当前遍历的节点的父节点,这样才能做插入节点的操作,所以要用pre和
2022-05-26 19:54:50
111
原创 235. 二叉搜索树的最近公共祖先
235. 二叉搜索树的最近公共祖先每日几道leetcode刷刷题!传送门题目描述给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例 1:代码递归法class Solution: def lowestCommonAncestor(self, root: 'TreeNode',
2022-05-25 20:22:31
83
原创 236. 二叉树的最近公共祖先
236. 二叉树的最近公共祖先每日几道leetcode刷刷题!传送门题目描述给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例 1:代码# Definition for a binary tree node.# class TreeNode:# def __init__(se
2022-05-23 19:52:57
106
原创 530. 二叉搜索树的最小绝对差
530. 二叉搜索树的最小绝对差每日几道leetcode刷刷题!传送门题目描述给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。差值是一个正数,其数值等于两值之差的绝对值。示例 1:代码class Solution: def getMinimumDifference(self, root: TreeNode) -> int: stack = [] cur = root pre = Non
2022-05-18 20:26:15
146
原创 98. 验证二叉搜索树
98. 验证二叉搜索树每日几道leetcode刷刷题!传送门题目描述给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。示例 1:代码1.递归设置上界和下界,左子树的上界是root.val,右子树的下界是root.valclass Solution: def isValidBST(self, root: Optional[TreeNode]) -> bool: #设置上界和下界,左子树的上界是root.val,右子树的下界是root
2022-05-17 20:49:18
142
原创 剑指 Offer 54. 二叉搜索树的第k大节点
剑指 Offer 54. 二叉搜索树的第k大节点每日几道leetcode刷刷题!JZ-Offer54题目描述给定一棵二叉搜索树,请找出其中第 k 大的节点的值ps:二叉搜索树性质:左子树均小于其根右子树均大于其根因此,二叉搜索树也称为二叉排序树,所以他的中序排序就是递增的序列,那他的倒序(即右-中-左)为降序。代码class Solution: def kthLargest(self, root: TreeNode, k: int) -> int:
2022-05-14 19:43:42
196
原创 617. 合并二叉树
617. 合并二叉树每日几道leetcode刷刷题!JZ-Offer47题目描述给你两棵二叉树: root1 和 root2 。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。返回合并后的二叉树。注意: 合并过程必须从两个树的根节点开始。示例 1:代码# Definitio
2022-05-13 19:43:39
89
原创 106. 从中序与后序遍历序列构造二叉树
106. 从中序与后序遍历序列构造二叉树每日几道leetcode刷刷题!传送门题目描述给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。示例 1:输入:inorder = [9,3,15,20,7], postorder = [9,15,7,20,3]输出:[3,9,20,null,null,15,7]代码# Definition for a binar
2022-05-12 19:54:47
208
原创 自学Java03 -Java语言基础
【Java语言基础】文章目录【Java语言基础】前言一、Java主类结构二、基本数据类型2.1整型、浮点型、字符型、布尔型2.2 常量与变量2.3运算符2.4 数据类型转换(显示/隐式)前言工作难啊,准备自学Java,并做一下笔记!主要是自用。主要学习来源菜鸟教程以及一些评论的整理,有错误的请各位大佬指出哈!一、Java主类结构二、基本数据类型2.1整型、浮点型、字符型、布尔型2.2 常量与变量2.3运算符2.4 数据类型转换(显示/隐式)未完,只是我的笔记做个目录...
2022-05-12 00:21:10
190
原创 113. 路径总和 II
113. 路径总和 II每日几道leetcode刷刷题!传送门题目描述给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。叶子节点 是指没有子节点的节点示例 1:输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22输出:[[5,4,11,2],[5,8,4,5]]代码# Definition for a binary tre
2022-05-11 19:20:25
101
原创 404.左叶子之和
404.左叶子之和每日几道leetcode刷刷题!传送门题目描述给定二叉树的根节点 root ,返回所有左叶子之和。示例 1:输入: root = [3,9,20,null,null,15,7]输出: 24解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24代码class Solution(object): def sumOfLeftLeaves(self, root): """ :type root: TreeN
2022-05-10 20:34:05
1048
原创 自学Java-02安装Eclipse(包含中文包)、安装JDK及相关环境的配置
安装Eclipse文章目录安装Eclipse前言一、Eclipse安装前言自学材料主要参考 菜鸟教程一、Eclipse安装Eclipse:另一个免费开源的java IDE,下载地址:传送门选择Eclipse IDE for Java Developers:选择自己对应的版本,跳出下载界面点击Download即可(可能会弹出一个需要你付费的页面,并不是eclipse需要付费,这只是请求你捐钱的,无需理会)下载完成后,解压安装包,解压路径随意。打开之后,选中图中的文件,在桌面创建
2022-05-10 11:49:22
657
原创 222. 完全二叉树的节点个数
222. 完全二叉树的节点个数每日几道leetcode刷刷题!传送门本题参考【代码随想录】题目描述给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。代码if not root: return 0 left = root.left
2022-05-09 20:29:03
935
原创 515. 在每个树行中找最大值
515. 在每个树行中找最大值每日几道leetcode刷刷题!传送门题目描述给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值代码class Solution: def largestValues(self, root: Optional[TreeNode]) -> List[int]: if not root: return [] quene = [root] res = []
2022-05-07 15:17:11
428
原创 自学Java-01
【Java基础】Hello,world文章目录【Java基础】Hello,world前言一、Java简介主要特性Java 语言是简单的:Java 语言是面向对象的:Java语言是分布式的:Java 语言是健壮的:Java语言是安全的:Java 语言是体系结构中立的:Java 语言是可移植的:Java 语言是解释型的:Java 是高性能的:Java 语言是多线程的:Java 语言是动态的:开发工具前言准备开始自学Java,有错误的希望各位老哥可以指出!学习材料来源网络以及书记、自己整理。一、J
2022-05-07 00:18:04
128
原创 429. N 叉树的层序遍历
429. N 叉树的层序遍历每日几道leetcode刷刷题!传送门题目描述给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。示例 1:输入:root = [1,null,3,2,4,null,5,6]输出:[[1],[3,2,4],[5,6]]代码# Definition for a Node.class Node: def __init__(self, val=None,
2022-05-06 17:32:00
1280
原创 lc199+637. 二叉树的右视图(python)
lc199. 二叉树的右视图每日几道leetcode刷刷题!传送门题目描述给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例 1:输入: [1,2,3,null,5,null,4]输出: [1,3,4]代码# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=No
2022-05-05 19:32:17
983
原创 51. N 皇后
51. N 皇后每日几道leetcode刷刷题!传送门题目描述n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例 1:输入:n = 4输出:[[“.Q…”,“…Q”,“Q…”,“…Q.”],[“…Q.”,“Q…”,“…Q”,“.Q…”]]解释:如上图所示,4 皇
2022-05-02 12:53:06
84
原创 46+47. 全排列(回溯算法)
46. 全排列每日几道leetcode刷刷题!传送门·题目描述给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]代码class Solution: def permute(self, nums: List[int]) -> List[List[int]]:
2022-05-01 14:10:46
369
原创 491. 递增子序列(回溯算法)
491. 递增子序列每日几道leetcode刷刷题!传送门题目描述给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。示例 1:输入:nums = [4,4,3,2,1]输出:[[4,4]]代码class Solution: def findSubsequences(self, nums: List[int]) -
2022-05-01 13:53:34
269
原创 78. 子集问题(回溯算法,子集)
78. 子集每日几道leetcode刷刷题!传送门题目描述给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]代码class Solution: def subsets(self, nums: List[int]) -> List[Lis
2022-04-30 12:52:26
450
原创 93. 复原 IP 地址(回溯算法,分割)
93. 复原 IP 地址每日几道leetcode刷刷题!传送门题目描述有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “192.168@1.1” 是 无效 IP 地址。给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些
2022-04-29 20:22:35
306
原创 131. 分割回文串(回溯算法)
131. 分割回文串每日几道leetcode刷刷题!传送门题目描述给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。回文串 是正着读和反着读都一样的字符串。示例 1:示例 1:输入:s = “aab”输出:[[“a”,“a”,“b”],[“aa”,“b”]]代码class Solution: def partition(self, s: str) -> List[List[str]]: pat
2022-04-28 20:38:38
281
原创 lc39+40. 组合总和(回溯算法)
lc39. 组合总和每日几道leetcode刷刷题!lc39题目描述给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。输入:c
2022-04-27 16:50:20
144
原创 回溯算法总结(一)组合问题
回溯算法总结`文章目录回溯算法总结前言一、回溯算法是什么二、使用步骤1.引入库2.读入数据总结前言主要借鉴【代码随想录】,大部分为笔记,由于自己学习整理。一、回溯算法是什么回溯算法也可为二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarn
2022-04-26 23:57:31
731
原创 剑指 Offer II 085. 生成匹配的括号
剑指 Offer II 085. 生成匹配的括号每日几道leetcode刷刷题!JZ-Offer085题目描述正整数 n 代表生成括号的对数,请设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例 1:输入:n = 3输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]代码class Solution: def generateParenthesis(self, n: int) -> List[str]:
2022-04-20 13:14:28
63
原创 剑指 Offer 38. 字符串的排列
剑指 Offer 38. 字符串的排列每日几道leetcode刷刷题!JZ-Offer38题目描述输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例 1:输入:s = “abc”输出:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”]代码class Solution: def permutation(self, nums: List[int]) -> List[List[int]]
2022-04-19 13:37:14
75
原创 C++八股文-03
C++八股文-03`文章目录C++八股文-03前言一、简述C和C++的区别二、C程序从源程序到二进制机器代码的过程和gcc指令三、C程序的内存管理四、堆和栈的区别五、内存泄漏前言本系列主要的目的是找工作,要记!里面的内容大部分来源于网络,以及自己的一些理解和总结!如果有错误的地方,希望各位大佬指正!(听说点赞收藏+关注的人都会进大厂噢!加油!!)参考以及补充 传送门一、简述C和C++的区别(1)思想上:C是面向过程的,它的主要特点是函数。编程思想是将问题分解成不同的步骤,并调用函数来依
2022-04-15 19:01:47
734
2
原创 1004. 最大连续1的个数 III(滑动窗口python)
1004. 最大连续1的个数 III每日几道leetcode刷刷题!lc1004题目描述给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k 个 0 ,则返回 数组中连续 1 的最大个数 。示例 1:输入:nums = [1,1,1,0,0,0,1,1,1,1,0], K = 2输出:6解释:[1,1,1,0,0,1,1,1,1,1,1]粗体数字从 0 翻转到 1,最长的子数组长度为 6。示例 2:输入:nums = [0,0,1,1,0,0,1,1,1,0,1,1
2022-04-15 15:50:36
527
原创 剑指 Offer 48. 最长不含重复字符的子字符串(滑动窗口python)
剑指 Offer 48. 最长不含重复字符的子字符串每日几道leetcode刷刷题!JZ-Offer48题目描述请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。代码class Solution: def lengthOfLonge
2022-04-14 23:27:06
494
原创 【C++基础】03
【C++基础】03文章目录【C++基础】03前言一、 数据类型二、typedef 声明三、枚举类型(enum)前言工作难啊,准备重新学习C++,并做一下笔记!主要是自用。主要学习来源菜鸟教程以及一些评论的整理,有错误的请各位大佬指出哈! 传送门一、 数据类型64位编译器char :1个字节char*(即指针变量): 8个字节short int : 2个字节int: 4个字节unsigned int : 4个字节float: 4个字节double: 8个字节lon
2022-04-14 12:43:55
67
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人