草庐IT

Leetcode刷题第五周

全部标签

Java LeetCode篇-二叉树经典解法(实现:判断平衡二叉树、找两个节点最近的祖先等)

🔥博客主页: 【小扳_-CSDN博客】❤感谢大家点赞👍收藏⭐评论✍  文章目录    1.0平衡二叉树    1.1实现判断平衡二叉树的思路    1.2代码实现判断平衡二叉树    2.0二叉树的层序遍历        2.1实现二叉树层序遍历的思路     2.2代码实现二叉树层序遍历    3.0二叉树的最近公共祖先        3.1实现二叉树的最近公共祖先的思路    3.2 代码实现二叉树的最近公共祖先    4.0根据二叉树创建字符串    4.1实现根据二叉树创建字符串的思路    4.2代码实现根据二叉树创建字符串    1.0平衡二叉树题目:        给定一个二叉树

代码随想录 Day43 动态规划11 LeetCode T309 买卖股票的最佳时期含冷冻期 T714买卖股票的最佳时机含手续费

LeetCodeT309买卖股票的最佳时机含冷冻期题目链接:309.买卖股票的最佳时机含冷冻期-力扣(LeetCode)题目思路:这题其实就是将卖出的状态拆分成三个状态1.前两天就卖出并一直保持卖出的状态2.今天卖出的状态3.今天是冷冻期的状态当然还有一个持有的状态下面我们用动规五部曲来分析1.确定dp数组含义dp[i][j]同样表示第i天在第j个状态的最大钱数2.确定递推公式//持有状态要么是之前就是持有状态的延续,要么就是冷冻期结束买入,要么就是卖出状态买入,三者取最大值即可dp[i][0]//卖出持续状态  维持前面的卖出状态或者是冷冻期结束维持卖出状态dp[i][1]//当天卖出状态就

算法leetcode|92. 反转链表 II(rust重拳出击)

文章目录92.反转链表II:样例1:样例2:提示:进阶:分析:题解:rust:go:c++:python:java:92.反转链表II:给你单链表的头指针head和两个整数left和right,其中left。请你反转从位置left到位置right的链表节点,返回反转后的链表。样例1:输入: head=[1,2,3,4,5],left=2,right=4 输出: [1,4,3,2,5]样例2:输入: head=[5],left=1,right=1 输出: [5]提示:链表中节点数目为n1-5001进阶:你可以使用一趟扫描完成反转吗?将链表分成3部分,即前面不需要反转的部分,中间需要反转的

Java LeetCode篇-深入了解关于栈的经典解法(栈实现:中缀表达式转后缀)

🔥博客主页: 【小扳_-CSDN博客】❤感谢大家点赞👍收藏⭐评论✍   文章目录    1.0中缀表达式转后缀说明    1.1实现中缀表达式转后缀思路    2.0逆波兰表达式求值    2.1实现逆波兰表达式求值思路    3.0有效的括号    3.1实现有效的括号思路    4.0栈的压入、弹出序列    4.1实现栈的压入、弹出序列思路    5.0最小栈    5.1实现最小栈思路    1.0中缀表达式转后缀说明        中缀表达式转后缀表达式是一种常见的算术表达式转换方法,它将中缀表达式(即常见的人类习惯的表达方式,例如("3+4*2")转换为后缀表达式(也称为逆波兰表达

solidity进阶第五课——Create2

Create2操作码使我们在智能合约部署在以太坊网络之前就能预测合约的地址。Uniswap创建Pair合约用的就是Create2而不是Create。Create是如何计算地址智能合约可以由其他合约和普通账户利用Create操作码创建。在这两种情况下,新合约的地址都以相同的方式计算:创建者的地址(通常为部署的钱包地址或者合约地址)和nonce(该地址发送交易的总数,对于合约账户是创建的合约总数,每创建一个合约nonce+1))的哈希。新地址=hash(创建者地址,nonce)创建者地址不会变,但nonce可能会随时间而改变,因此用Create创建的合约地址不好预测。Create2是如何计算地址C

leetcode 面试题 02.02. 返回倒数第k个节点

提建议就是,有些题还是有联系的,建议就收看完 876.链表的中间节点(http://t.csdnimg.cn/7axLa),再将这一题联系起来面试题02.02.返回倒数第k个节点题目:实现一种算法,找出单向链表中倒数第k个节点。返回该节点的值。说明:给定的k保证是有效的。题目链接力扣(LeetCode)官网-全球极客挚爱的技术成长平台文字和画图分析这题和快慢指针有点像(返回876.链表的中间节点),我们定义两个指针fast指针和slow指针,都存放头节点的地址这里我们有两种思路:fast先比slow多走k步,然后同时走完链表(放循环里面)fast先比slow多走k-1步,然后同时走完链表(放循

代码随想录算法训练营第一天 | LeetCode 704. 二分查找、35. 搜索插入位置、 34. 在排序数组中查找元素的第一个和最后一个位置、 27. 移除元素

今日刷题心得体会(未看视频讲解):1、二分搜索:涉及要找target前、后的元素时,注意数组是否溢出。704.二分查找题目链接:704.二分查找-力扣(LeetCode)想法:使用二分查找代码实现:intsearch(int*nums,intnumsSize,inttarget){intleft=0,right=numsSize-1,mid=(left+right)/2,ans=-1;while(lefttarget){right=mid-1;mid=(left+right)/2;}elseif(nums[mid]==target){ans=mid;break;}}returnans;}遇到的

C语言-每日刷题练习

[蓝桥杯2013省B]翻硬币 题目背景小明正在玩一个“翻硬币”的游戏。题目描述桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零),比如可能情形是 **oo***oooo,如果同时翻转左边的两个硬币,则变为 oooo***oooo。现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?输入格式两行等长字符串,分别表示初始状态和要达到的目标状态,每行长度小于 1000。数据保证一定存在至少一种方案可以从初始状态和要达到的目标状态。输出格式一个整数,表示最小操作步数。输入输出样例输入输出样例

LeetCode-10. 正则表达式匹配

LeetCode-10.正则表达式匹配问题分析算法描述程序代码C++Go问题分析这道题的难点主要在于*号的匹配,这里记dp[i][j]表示s[1...i]和p[1...j]能否完成匹配,先根据特殊情况归纳总结:*号匹配0次,则dp[i][j]=dp[i][j-2]*号匹配1次,则dp[i][j]=dp[i-1][j-2]&&s[i]==p[j-1]*号匹配2次,则dp[i][j]=dp[i-2][j-2]&&s[i-1]==p[j-1]&&s[i]==p[j-1]*号匹配3次,则dp[i][j]=dp[i-3][j-2]&&...*号匹配k次,则dp[i][j]=dp[i-k][j-2]&&.

java数据结构(哈希表—HashMap)含LeetCode例题讲解

 目录1、HashMap的基本方法1.1、基础方法(增删改查)1.2、其他方法 2、HashMap的相关例题2.1、题目介绍2.2、解题2.2.1、解题思路2.2.2、解题图解2.3、解题代码1、HashMap的基本方法HashMap是一个散列表,它存储的内容是键值(key-value)映射。HashMap的key与value类型可以相同也可以不同,根据定义,不受限制。1.1、基础方法(增删改查)1.定义一个哈希表HashMaphashmap=newHashMap();2.添加键值对(key-value)(增)hashmap.put(1,"string1");//执行完后hash表内为{1=s