E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
LeetCode-初级算法
二叉搜索树节点最小距离(C++)
题目来源:
leetcode-
二叉搜索树节点最小距离(序号:783)题目描述:给定一个二叉搜索树的根节点root,返回树中任意两节点的差的最小值。
CS_Kevin_1
·
2024-02-02 11:43
笔记
【
leetcode-
树】二叉树的序列化与反序列化
【
leetcode-
树】二叉树的序列化与反序列化序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据
程序员小2
·
2024-02-01 21:58
去除重复字母
题目:去除重复字母(
LeetCode-
困难)给你一个仅包含小写字母的字符串,请你去除字符串中重复的字母,使得每个字母只出现一次。
大橘猪猪侠
·
2024-02-01 20:57
leetcode-
存在重复元素
217.存在重复元素把列表转成集合,我们知道集合中是没有重复元素的,然后和原列表的长度做对比,不相等说明是有重复元素的classSolution:defcontainsDuplicate(self,nums:List[int])->bool:iflen(set(nums))==len(nums):returnFalseelse:returnTrue
独孤--蝴蝶
·
2024-01-31 13:29
leetcode
leetcode-
存在重复元素 II
219.存在重复元素II题解:可以使用哈希表来解决这个问题。遍历数组,对于每个元素,检查它是否已经在哈希表中出现过,如果出现过,则判断当前索引与哈希表中存储的索引之差是否小于等于k,如果是,则返回true;否则,将当前元素及其索引存入哈希表中。如果遍历完整个数组都没有找到满足条件的两个索引,则返回false。classSolution:defcontainsNearbyDuplicate(self
独孤--蝴蝶
·
2024-01-31 13:29
leetcode
LeetCode-
树-层序遍历-完全二叉树插入器
1简介完全二叉树特点:(1)叶子结点都在最底下的两层;(2)最后一层的叶子结点都靠左排列,即中间没有空洞;(3)除最后一层外,其他层的节点个数都要达到最大;2相关题目2.1完全二叉树插入器919.完全二叉树插入器剑指OfferII043.往完全二叉树添加节点这里实际上就是进行了层序遍历,代码具体如下:classCBTInserter{private:TreeNode*r;public:CBTIns
hclbeloved
·
2024-01-31 13:28
#
LeetCode-树
leetcode
leetcode-
完全二叉树的节点个数
222.完全二叉树的节点个数题解:使用递归的方法来解决这个问题。完全二叉树的节点个数可以通过以下公式计算:节点个数=左子树节点个数+右子树节点个数+1(根节点)首先,我们需要定义一个辅助函数countNodes(root)来计算以root为根节点的子树的节点个数。然后,我们可以使用递归的方法来计算完全二叉树的节点个数。#Definitionforabinarytreenode.#classTree
独孤--蝴蝶
·
2024-01-31 13:27
leetcode
【
leetcode-
树】不同的二叉搜索树 II
【
leetcode-
树】不同的二叉搜索树II题目:给定一个整数n,生成所有由1...n为节点所组成的二叉搜索树。
程序员小2
·
2024-01-30 04:36
leetcode-
颠倒二进制位
190.颠倒二进制位题解:我们可以使用位运算来解决这个问题。具体步骤如下:初始化一个变量res为0,用于存储颠倒后的二进制位。循环32次,每次将n的最低位取出,并将其添加到res的最高位上。将n右移一位,将res左移一位。返回res作为最终结果。classSolution:defreverseBits(self,n:int)->int:res=0foriinrange(32):res=(res>=
独孤--蝴蝶
·
2024-01-29 18:38
leetcode
leetcode-
位1的个数
191.位1的个数题解:我们可以使用位运算来解决这个问题。具体步骤如下:初始化一个变量count为0,用于存储二进制表达式中数字位数为'1'的个数。循环32次,每次将n与1进行按位与运算,如果结果为1,则说明当前位是1,将count加1。将n右移一位。返回count作为最终结果。classSolution:defhammingWeight(self,n:int)->int:count=0for_i
独孤--蝴蝶
·
2024-01-29 18:38
leetcode
leetcode-
快乐数
202.快乐数题解:定义一个函数get_sum(n),用于计算n的每一位数字的平方和。初始化一个集合visited,用于记录已经出现过的数字。循环计算n的每一位数字的平方和,直到n等于1或者出现重复的数字为止。如果n等于1,则返回True,表示n是快乐数;否则返回False,表示n不是快乐数。classSolution:defisHappy(self,n:int)->bool:defget_sum
独孤--蝴蝶
·
2024-01-29 18:38
leetcode
leetcode-
移除链表元素
203.移除链表元素题解:创建一个虚拟头结点指向头结点head,定义一个cur指针指向这个虚拟头结点,因为是单向链表,每次判断的时候只能使用当前指针cur的next节点值和给定值进行判断,所以循环判断的终止条件是cur.next!=None。#Definitionforsingly-linkedlist.#classListNode:#def__init__(self,val=0,next=Non
独孤--蝴蝶
·
2024-01-29 18:38
leetcode
leetcode-
买卖股票的最佳时机
121.买卖股票的最佳时机为了解决这个问题,你需要找到价格数组中最低点和最高点的最大差值,但要确保最高点在最低点之后。你可以通过遍历价格数组一次来完成这个操作:初始化一个变量min_price为一个非常大的数,它将跟踪你遍历过的价格中的最小值。初始化一个变量max_profit为0,它将跟踪可实现的最大利润。遍历价格数组prices。对于每个价格,你都会:更新min_price为当前价格和min_
独孤--蝴蝶
·
2024-01-29 18:07
leetcode
leetcode-
反转链表
206.反转链表题解:定义两个指针prev和cur,分别指向当前节点的前一个节点和当前节点,初始时,prev为None,cur为head,在遍历的过程中,我们需要创建一个临时指针用来指向cur.next,因为cur指向prev之后,就会和cur.next断链了。遍历过程是,每次将cur的next指针执行prev,然后将prev和cur分别向后移动一位,当遍历到尾部时,链表就被反转了,反转后的链表头
独孤--蝴蝶
·
2024-01-29 18:34
leetcode
【
leetcode-
动态规划】矩阵中的最长递增路径
【
leetcode-
动态规划】矩阵中的最长递增路径题目:给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。
程序员小2
·
2024-01-29 09:41
每天Leetcode 刷题
初级算法
篇-汉明距离
题目要求:力扣题解:循环和位移动代码/***@program:mydemo*@description:汉明距离*@author:Mr.zeng*@create:2021-02-2609:50**/publicclassSolution37{publicinthammingDistance(intx,inty){returnInteger.bitCount(x^y);}}
one 大白(●—●)
·
2024-01-29 07:53
Leetcode
leetcode
算法
汉明距离
学习记录
知识分享
LeetCode-
题目整理【12】:N皇后问题--回溯算法
注意点,语法:=一定要记得初始化内层数组的长度:board[i]=make([]rune,n),否则就会报出现越界的错//第1步,初始化二维数组,内层数组长度为0,外层为nboard:=make([][]rune,n)fori:=0;i=0&&j>=0;i,j=i-1,j-1{ifboard[i][j]=='Q'{returnfalse}}//检查右上方是否有皇后fori,j:=row-1,col
菜鸟要加油!
·
2024-01-28 16:35
算法
leetcode
leetcode-
二叉树层序遍历
question:层序遍历和前中后序遍历的不同在与,后面三者用栈实现,二层序遍历则用队列实现比较块这里引出深度优先搜索DFS和广度优先搜索BFS解题:广度优先搜索BFSclassSolution:#广度优先搜索BFSdeflevelOrder(self,root:TreeNode)->List[List[int]]:queue=[root]#将根节点保存到queue中ans=[]ifnotroot
白舟的博客
·
2024-01-28 11:15
leetcode解法
二叉树
队列
dfs
bfs
leetcode-
双指针
283-移动零给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。请注意,必须在不复制数组的情况下原地对数组进行操作。方法一:双指针使用双指针,左指针指向当前已经处理好的序列的尾部,右指针指向待处理序列的头部。右指针不断向右移动,每次右指针指向非零数,则将左右指针对应的数交换,同时左指针右移。注意到以下性质:1.左指针左边均为非零数;2.右指针左边直到左指针处均
Emperorist
·
2024-01-28 01:57
数组
双指针
【算法专题】动态规划之简单多状态 dp 问题
删除并获得点数4.粉刷房子5.买卖股票的最佳时机含冷冻期6.买卖股票的最佳时机含手续费7.买卖股票的最佳时机Ⅲ8.买卖股票的最佳时机Ⅳ动态规划---简单多状态dp问题1.按摩师(打家劫舍Ⅰ的变形)题目链接->
Leetcode
YoungMLet
·
2024-01-27 22:45
算法专栏
算法
动态规划
c++
开发语言
Leetcode-
树的遍历
文章目录q94二叉树的中序遍历q102二叉树的层次遍历q105从前序与中序遍历序列构造二叉树q106从中序与后序遍历序列构造二叉树q110平衡二叉树q114二叉树展开为链表q124二叉树中的最大路径和q144二叉树的前序遍历q145二叉树的后序遍历q297二叉树的序列化与反序列化q543二叉树的直径q617合并二叉树q1367二叉树中的链表剑指Offer07.重建二叉树剑指Offer26.树的子结
jenrain
·
2024-01-27 00:24
LeetCode
leetcode
LeetCode-
题目整理【11】:回溯算法
下面这些题目的解答,都使用到回溯算法解答,通过找到目标条件,满足之后就可以返回;另外可以使用剪枝,减少调用递归的次数,减少时间。电话号码的字母组合中等给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。答案可以按任意顺序返回。给出数字到字母的映射如下(与电话按键相同)。注意1不对应任何字母。示例1:输入:digits=“23”输出:[“ad”,“ae”,“af”,“bd”,“be”,“b
菜鸟要加油!
·
2024-01-26 19:56
算法
leetcode
LeetCode-
题目整理【10】:单词搜索
先补充一些小知识:dfs和回溯的区别深度优先搜索(DFS)和回溯是两种常用的算法思想,它们在解决问题时有一些相似之处,但也有一些不同之处。深度优先搜索(DFS)是一种用于遍历或搜索图、树或其他数据结构的算法。它从一个起始节点开始,沿着一条路径尽可能深地搜索,直到无法继续或达到目标节点。然后,它回溯到之前的节点,并尝试其他的路径。DFS是一种递归的算法,通过调用自身来实现深度搜索。DFS的特点是先深
菜鸟要加油!
·
2024-01-26 19:54
leetcode
深度优先
算法
LeetCode-
题目整理【9】:Trie树
最长公共前缀可以使用字典树来解答,在解答中,需要查找单词,如果有精确需要查找的单词word,那么可以使用代码:func(this*Trie)Search(wordstring)bool{for_,v:=rangeword{ifthis.next[v-'a']==nil{returnfalse}this=this.next[v-'a']}ifthis.isEnd==false{returnfalse
菜鸟要加油!
·
2024-01-25 22:48
leetcode
算法
go
初级算法
-字符串-有效的字母异位词
给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。注意:若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。摘一个示例做个说明.示例1:输入:s="anagram",t="nagaram"输出:true条件分析:两个字符串比较->字符串操作s、t每个字符出现的次数都相同->字符串长度相同解决思路1:根据分析1,字符串转换后进行比较跟判断长度,不同则不是字符串转数组,然后数组
coenen
·
2024-01-25 09:14
leetcode-
构造元素不等于两相邻元素平均值的数组
给你一个下标从0开始的数组nums,数组由若干互不相同的整数组成。你打算重新排列数组中的元素以满足:重排后,数组中的每个元素都不等于其两侧相邻元素的平均值。更公式化的说法是,重新排列的数组应当满足这一属性:对于范围1res[length-2]){res[length-1]=nums[length-1];}else{res[length-1]=res[length-2];res[length-2]=
程序员小2
·
2024-01-24 08:05
LeetCode-
题目整理【8】:罗马数字转整数、整数转罗马数字
罗马数字转整数罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符数值I1V5X10L50C100D500M1000例如,罗马数字2写做II,即为两个并列的1。12写做XII,即为X+II。27写做XXVII,即为XX+V+II。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如4不写做IIII,而是IV。数字1在数字5的左边,所表示的数等于大数5减小数1得到的数值4。同样地
菜鸟要加油!
·
2024-01-24 05:37
leetcode
算法
LeetCode-
题目整理【4】:跳跃游戏
使用贪心算法跳跃游戏给你一个非负整数数组nums,你最初位于数组的第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回true;否则,返回false。示例1:输入:nums=[2,3,1,1,4]输出:true解释:可以先跳1步,从下标0到达下标1,然后再从下标1跳3步到达最后一个下标。示例2:输入:nums=[3,2,1,0,4]输出:fa
菜鸟要加油!
·
2024-01-24 05:36
leetcode
算法
【
leetcode-
数组】两数之和 II - 输入有序数组
【
leetcode-
数组】两数之和II-输入有序数组题目:给定一个已按照升序排列的有序数组,找到两个数使得它们相加之和等于目标数。
程序员小2
·
2024-01-23 18:07
LeetCode-
题目整理【7】:加油站
加油站在一条环路上有n个加油站,其中第i个加油站有汽油gas[i]升。你有一辆油箱容量无限的的汽车,从第i个加油站开往第i+1个加油站需要消耗汽油cost[i]升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组gas和cost,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回-1。如果存在解,则保证它是唯一的。示例1:输入:gas=[1,2,3,4,5],cost=[
菜鸟要加油!
·
2024-01-23 14:16
leetcode
算法
LeetCode-
题目整理【5】:O(1) 时间插入、删除和获取随机元素
RandomizedSet结构体存在切片和哈希表的原因:变长数组由于可以根据下标定位到特定元素,因此可以在O(1)的时间内完成获取随机元素操作,但是由于无法在O(1)的时间内判断元素是否存在,因此不能在O(1)的时间内完成插入和删除操作。哈希表可以在O(1)的时间内判断元素是否存在,因此可以在O(1)的时间内完成插入和删除操作,但是不可以根据下标定位到特定元素,因此不能在O(1)的时间内完成获取随
菜鸟要加油!
·
2024-01-23 14:13
leetcode
算法
go
数据结构
LeetCode-
题目整理【6】:除自身以外数组的乘积
除自身以外数组的乘积给你一个整数数组nums,返回数组answer,其中answer[i]等于nums中除nums[i]之外其余各元素的乘积。题目数据保证数组nums之中任意元素的全部前缀元素和后缀的乘积都在32位整数范围内。请不要使用除法,且在O(n)时间复杂度内完成此题。示例1:输入:nums=[1,2,3,4]输出:[24,12,8,6]示例2:输入:nums=[-1,1,0,-3,3]输出
菜鸟要加油!
·
2024-01-23 09:51
leetcode
算法
LeetCode-
题目整理【1】
从下面的三道题可以发现,都属于**删除元素,最后返回有效数组的长度。那么这时候可以使用双指针**,p为初始化一个指针,指向数组nums的起始位置,然后遍历数组,根据题目找到满足的条件,这时候就将当前遍历的值赋值给nums[p],然后p++(前后顺序需要根据题目来解答),所以大概代码种会存在:p:=0//初始化......nums[p]=nums[i]p++(或者:p++nums[p]=nums[i
菜鸟要加油!
·
2024-01-23 09:20
leetcode
算法
数据结构
LeetCode-
题目整理【3】:买卖股票的最佳时机
买卖股票的最佳时机都是求最大利润,但是在没有限制,如121和122,动态规划稍微复杂一些,建议不用,到最后两道难题,题目有限制,使用动态规划通过求解子问题的最优解来逐步求解原问题的最优解。买卖股票的最佳时机给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大
菜鸟要加油!
·
2024-01-23 09:48
leetcode
算法
初级算法
工作忙完了,就闲着浏览各种各样的网页,看到了W3Cschool的关于算法的挑战,感觉还蛮有意思的,进而总结了一下。翻转字符串算法要把字符串转化成数组,再借助数组的reverse方法翻转数组顺序,然后将数组转化成字符串functionreverseString(str){varstr=str.split('').reverse().join('')returnstr;}reverseString("
空城皆是旧梦
·
2024-01-23 05:16
leetcode-
环形链表
141.环形链表题解:这个问题可以使用快慢指针的方法来解决。首先,我们创建一个虚拟头节点,并将虚拟头节点的下一个节点指向head。然后我们创建两个指针,一个快指针和一个慢指针。快指针每次移动两个节点,而慢指针每次移动一个节点。如果链表中存在环,那么快指针和慢指针最终会在环内的某个位置相遇。如果链表中不存在环,那么快指针会先到达链表的尾部。#Definitionforsingly-linkedlis
独孤--蝴蝶
·
2024-01-22 11:02
leetcode
Leetcode-
面试题 02.07 链表相交
面试题02.07.链表相交解题思路1.分析题意,两个链表时末尾相交,也就是说,只要知道两个链表从后往前最初的相等元素即可2.求链表A的长度、求链表B的长度3.让curA为最长链表的头,lenA为其长度4.求长度差,让curA和curB在同一起点上(末尾位置对齐)5.遍历curA和curB,遇到相同则直接返回解题遇到的问题无后续需要总结学习的知识点能否设计一个时间复杂度O(n)、仅用O(1)内存的解
itbird01
·
2024-01-20 23:36
leetcode学习(
初级算法
-数组)
1.删除排序数组中的重复项
初级算法
-LeetBook-力扣(LeetCode)全球极客挚爱的技术成长平台(leetcode-cn.com)https://leetcode-cn.com/leetbook
lindorx
·
2024-01-19 12:41
linux
学习
C语言
leetcode
算法
数据结构
c语言
linux
leetcode-
杨辉三角ii
119.杨辉三角II题解:首先,我们需要创建一个列表来存储杨辉三角的每一行。然后,我们需要计算每一行的元素。每一行的每个元素都是上一行的两个相邻元素的和。第一个和最后一个元素总是1。最后,我们返回第rowIndex行。classSolution:defgetRow(self,rowIndex:int)->List[int]:res=[1]foriinrange(1,rowIndex+1):res.
独孤--蝴蝶
·
2024-01-19 08:03
leetcode
leetcode-
杨辉三角
118.杨辉三角题解:首先,我们需要创建一个二维列表,用于存储杨辉三角的每一行。然后,我们初始化第一行和第二行,因为杨辉三角的前两行是固定的。接下来,我们使用一个循环,从第三行开始,每一行的每个元素都是上一行的两个相邻元素的和。最后,我们返回生成的杨辉三角。classSolution:defgenerate(self,numRows:int)->List[List[int]]:ifnumRows=
独孤--蝴蝶
·
2024-01-19 08:27
leetcode
【
leetcode-
链表】旋转链表
【
leetcode-
链表】旋转链表题目:给定一个链表,旋转链表,将链表每个节点向右移动k个位置,其中k是非负数。
程序员小2
·
2024-01-18 17:06
【
leetcode-
链表】扁平化多级双向链表
【
leetcode-
链表】扁平化多级双向链表题目:多级双向链表中,除了指向下一个节点和前一个节点指针之外,它还有一个子链表指针,可能指向单独的双向链表。
程序员小2
·
2024-01-18 11:58
leetcode-
二叉树的最小深度
111.二叉树的最小深度#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclassSolution:defminDepth(self,root:Optional[TreeNod
独孤--蝴蝶
·
2024-01-17 09:01
leetcode
leetcode-
路径总和
112.路径总和#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclassSolution:defhasPathSum(self,root:Optional[TreeNode]
独孤--蝴蝶
·
2024-01-17 09:23
leetcode
【
leetcode-
字符串】单词拆分
【
leetcode-
字符串】单词拆分题目:给定一个非空字符串s和一个包含非空单词列表的字典wordDict,判定s是否可以被空格拆分为一个或多个在字典中出现的单词。
程序员小2
·
2024-01-17 08:23
leetcode-
二叉树的最大深度
104.二叉树的最大深度#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclassSolution:defmaxDepth(self,root:Optional[TreeNod
独孤--蝴蝶
·
2024-01-15 16:49
leetcode
leetcode-
删除排序链表中的重复元素
83.删除排序链表中的重复元素题解:要删除一个已排序链表中的所有重复元素,从而使每个元素只出现一次,我们可以使用一个指针来遍历这个链表,同时比较当前节点和它下一个节点的值。如果它们相等,我们就删除下一个节点,如果不相等,我们就移动指针。注:本题使用的是虚拟头节点#Definitionforsingly-linkedlist.#classListNode:#def__init__(self,val=
独孤--蝴蝶
·
2024-01-15 16:19
leetcode
leetcode-
合并两个有序数组
88.合并两个有序数组题解:这是一个经典的双指针问题,我们可以使用两个指针分别指向nums1和nums2的最后一个元素,然后比较两个指针所指向的元素大小,将较大的元素放入nums1的末尾,并将对应的指针向前移动一位。重复这个过程,直到nums2的所有元素都被放入nums1中。classSolution:defmerge(self,nums1:List[int],m:int,nums2:List[i
独孤--蝴蝶
·
2024-01-15 16:19
leetcode
leetcode-
对称二叉树
101.对称二叉树题解:首先我们要清楚,对称二叉树,比较的不是左右节点,而是根节点的左右子树是不是相互翻转的。比较的是两个树。就是说左子树的左节点和右子树的右节点做比较,左子树的右节点和右子树的左节点做比较。我们使用递归方法。1.递归函数的参数和返回值前面已经说过了,比较的是两个树,自然是左子树和右子树节点返回值是bool类型compare(left,right)2.终止条件节点为空的情况左节点为
独孤--蝴蝶
·
2024-01-15 16:19
leetcode
leetcode-
二进制求和
67.二进制求和classSolution:defaddBinary(self,a:str,b:str)->str:result=''carry=0foriinrange(max(len(a),len(b))):a_bit=a[-(i+1)]ifi
独孤--蝴蝶
·
2024-01-15 16:18
leetcode
上一页
1
2
3
4
5
6
7
8
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他