目录1.题目2.题解C#解法一:反转一半数字Java解法一:反转一半数字1.题目给你一个整数x,如果x是一个回文整数,返回true;否则,返回false。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121是回文,而123不是。示例1:输入:x=121输出:true示例2:输入:x=-121输出:false解释:从左向右读,为-121。从右向左读,为121-。因此它不是一个回文数。示例3:输入:x=10输出:false解释:从右向左读,为01。因此它不是一个回文数。提示:2^312.题解映入脑海的第一个想法是将数字转换为字符串,并检查字符串是否为回文。但是,这需要额外的非
一个算法中的经典问题,求最长回文子串问题,其实是可以归于二维动态规划问题。对于给定的一个字符串中,找到这个字符串中的回文子串,回文子串的概念是从前往后正向的读和从后往前反向的读都是完全相同的字符串。对这个问题进行分析,首先就是回文子串的最大的特征是把头部和尾部去掉相同数量的字符,中间所留下来的字符串仍然是一个回文子串,举例说明,对于abbacbbcabba这个字符串,其本身是一个回文子串,去掉了头尾相同数量的字符,去掉ab,剩下的bacbbcab还仍是回文子串,或者再在此基础上继续去掉字符,cbbc仍然是回文子串。而通过回文子串的这个特征,子结构仍为回文子串,即可以定义一个二维数组来表示当前字
本题为1月18日力扣每日一题题目来源:力扣第2171题题目tag:数位dp动态规划题面题目描述给定一个正整数数组beans,其中每个整数表示一个袋子里装的魔法豆的数目。请你从每个袋子中拿出一些豆子(也可以不拿出),使得剩下的非空袋子中(即至少还有一颗魔法豆的袋子)魔法豆的数目相等。一旦把魔法豆从袋子中取出,你不能再将它放到任何袋子中。请返回你需要拿出魔法豆的最少数目。示例示例1输入:beans=[4,1,6,5]输出:4解释:我们从有1个魔法豆的袋子中拿出1颗魔法豆。剩下袋子中魔法豆的数目为:[4,0,6,5]然后我们从有6个魔法豆的袋子中拿出2个魔法豆。剩下袋子中魔法豆的数目为:[4,0,4
1、最长回文子序列最长回文子序列(LongestPalindromicSubsequence,简称LPS)是常见的字符串问题之一,它指的是一个字符串中最长的回文子序列。回文指的是正反顺序读都相等的字符串。回文子序列不要求子序列在原字符串中是连续的。比如,例如字符序列"BBABCBCAB",最长回文子序列是“BACBCAB”(可能不唯一),它的长度是72、如何去写其状态转移方程?LPS问题可以通过动态规划来解决。我们定义状态dp[i][j]表示从字符串第i个字符到第j个字符的最长回文子序列的长度。对于一个长度为n的字符串,最长回文子序列的长度即为dp[0][n-1]。2.1初始化对于长度为1的子
前言❤️铁汁们大家好,欢迎大家来到出小月的博客里,今天小月呢写了一道题目叫替换空格,但是呢,写完之后调试了半天不知道哪里错了,经过小月的坚持不懈,终于成功,来分享给大家小月的错误,希望大家看完我这篇文章都能够“涨芝士”,感觉小月写的还不错的话,记得👍🏻点赞加关注😘鼓励一下博主哦,不然下次可找不到我啦❗❗作者简介❤️作者的主页:出小月的《程序员历险记》❤️专栏:《C语言》,《数据结构初阶》😊希望大家都能够:好好学习,天天编程❗❗❗文章目录前言作者简介一、题目介绍二、题目链接三、小月的思路四、小月出现的错误错误1错误2五、正确代码总结一、题目介绍🐻请实现一个函数,把字符串s中的每个空格替换成"%2
本题为1月16日力扣每日一题题目来源:力扣第2719题题目tag:数位dp动态规划题面题目描述给你两个数字字符串num1和num2,以及两个整数max_sum和min_sum。如果一个整数x满足以下条件,我们称它是一个好整数:\(num1\leqx\leqnum2\)\(min\_sum\leqdigit\_sum(x)\leqmax\_sum\)请你返回好整数的数目。答案可能很大,请返回答案对$10^9+7$取余后的结果。注意,digit_sum(x)表示x各位数字之和。示例示例1输入:num1="1",num2="12",min_num=1,max_num=8输出:11解释:总共有11个整
本题为1月16日力扣每日一题题目来源:力扣第2719题题目tag:数位dp动态规划题面题目描述给你两个数字字符串num1和num2,以及两个整数max_sum和min_sum。如果一个整数x满足以下条件,我们称它是一个好整数:\(num1\leqx\leqnum2\)\(min\_sum\leqdigit\_sum(x)\leqmax\_sum\)请你返回好整数的数目。答案可能很大,请返回答案对$10^9+7$取余后的结果。注意,digit_sum(x)表示x各位数字之和。示例示例1输入:num1="1",num2="12",min_num=1,max_num=8输出:11解释:总共有11个整
本题为1月15日力扣每日一题题目来源:力扣第82题题目tag:链表双指针题面题目描述给定一个已排序的链表的头head,删除原始链表中所有重复数字的节点,只留下不同的数字。返回已排序的链表。示例示例1输入:head=[1,2,3,3,4,4,5]输出:[1,2,5]示例2输入:head=[1,1,1,2,3]输出:[2,3]提示链表中节点数目在范围$[0,300]$内$-100\leqNode.val\leq100$题目数据保证链表已经按升序排列思路分析本题要做的其实就两件事,一是在链表中找到重复元素,二是删除链表的一些元素.第一件事很好完成,只需要在编译时看一看当前元素和后一个元素的值是否相等
题目:一个机器人位于一个mxn网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用1和0来表示。示例1:输入:obstacleGrid=[[0,0,0],[0,1,0],[0,0,0]]输出:2解释:3x3网格的正中间有一个障碍物。从左上角到右下角一共有2条不同的路径:向右->向右->向下->向下向下->向下->向右->向右示例2:输入:obstacleGrid=[[0,1],[0,0]]输出:1提示:
617.合并二叉树(经典)合并二叉树是操作两棵树的题目里面很经典的,如何对两棵树遍历以及处理?给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为NULL的节点将直接作为新二叉树的节点。示例1:注意:合并必须从两个树的根节点开始。思路参考:https://programmercarl.com/0617.%E5%90%88%E5%B9%B6%E4%BA%8C%E5%8F%89%E6%A0%91.html如何同时遍历两个二叉树呢?其实和遍历一个树逻辑是一