草庐IT

回文数-力扣

全部标签

【力扣刷题笔记】由简到难,模块突破, 你与AC只差一句提示

必会基础部分👇👇👇👇👇👇,可以收藏下来慢慢看。文章目录一、易懂贪心算法分配问题455.分发饼干分发糖果区间问题435.无重叠区间练习题605.种花问题452.用最少数量的箭引爆气球763.划分字母区间122.买卖股票最佳时机Ⅱ406.根据身高重建队列665.非递减数列二、玩转双指针经典题目167.两数之和Ⅱ88.合并两个有序数组142.环形链表Ⅱ76.最小覆盖子串练习题680.验证回文字符串Ⅱ633.平方数之和524.通过删除字母匹配到字典里最长单词三、二分查找经典题目69.x的平方根34.在排序数组中查找元素的第一个和最后一个位置81.搜索旋转排序数组Ⅱ练习题目154.寻找旋转排序数组的最小

【动态规划】【字符串】132.分割回文串 II

作者推荐【动态规划】【字符串】扰乱字符串本文涉及的基础知识点动态规划字符串LeetCode132.分割回文串II给你一个字符串s,请你将s分割成一些子串,使每个子串都是回文。返回符合要求的最少分割次数。示例1:输入:s=“aab”输出:1解释:只需一次分割就可将s分割成[“aa”,“b”]这样两个回文子串。示例2:输入:s=“a”输出:0示例3:输入:s=“ab”输出:1提示:1s仅由小写英文字母组成动态规划分两步:一,枚举回文的中心,记录所有的回文。空间复杂度和时间复杂度都是O(nn)。二,通过动态规划计算所有所有前缀可以差分成多少个不重叠的子字符串。空间复杂度O(n),时间复杂度是O(nn

判断字符串是否为回文的三种常用编程语言实现

引言:回文是一种具有镜像对称性的字符串,即它从左到右读和从右到左读是相同的。回文可以在文学、语言学、数学、计算机科学等领域中得到广泛应用。在计算机科学中,判断一个字符串是否为回文是一项基本的算法挑战。在本文中,我们将介绍三种常见的编程语言中用于判断字符串是否为回文的算法,并对它们的时间复杂度和空间复杂度进行分析。正文:我们将分别介绍用C语言、Python和Java实现判断字符串是否为回文的算法。C语言实现:#include#include#includeboolisPalindrome(char*s){intlen=strlen(s);for(inti=0,j=len-1;ij;i++,j--

《LeetCode力扣练习》代码随想录——栈与队列(前 K 个高频元素---Java)

《LeetCode力扣练习》代码随想录——栈与队列(前K个高频元素—Java)刷题思路来源于代码随想录347.前K个高频元素堆classSolution{publicint[]topKFrequent(int[]nums,intk){if(nums.length==1){returnnums;}MapInteger,Integer>map=newHashMap>();for(intnum:nums){map.put(num,(map.getOrDefault(num,0)+1));}PriorityQueueint[]>heap=newPriorityQueue>((o1,o2)->o1[1]

算法-小红的ABC(最短回文子串)- [简单]

直通牛客-小红的ABC题目描述小红拿到了一个只包含'a','b','c'三种字符的字符串。小红想知道,这个字符串最短的、长度超过1的回文子串的长度是多少?子串定义:字符串取一段连续的区间。例如"abcca"的子串有"ab"、"bcca"等,但"aca"则不是它的子串。回文的定义:一个字符串正着读和倒着读都是相同的,那么定义它的回文的。输入描述:一个只包含'a','b','c'三种字符的字符串。数据范围:字符串长度不小于2,且不超过100输出描述:如果不存在长度超过1的回文子串,则输出-1。否则输出长度超过1的最短回文子串的长度。分析:回文串只有两类:xx 或者xyx两种类型,以abccba为例

【Day28】力扣算法(超详细思路+注释) [1790. 仅执行一次字符串交换能否使两个字符串相等 ] [328. 奇偶链表 ][148. 排序链表]

刷题打卡,第二十八天题目一、1790.仅执行一次字符串交换能否使两个字符串相等题目二、328.奇偶链表题目三、148.排序链表题目一、1790.仅执行一次字符串交换能否使两个字符串相等原题链接:1790.仅执行一次字符串交换能否使两个字符串相等题目描述:给你长度相等的两个字符串s1和s2。一次字符串交换操作的步骤如下:选出某个字符串中的两个下标(不必不同),并交换这两个下标所对应的字符。如果对其中一个字符串执行最多一次字符串交换就可以使两个字符串相等,返回true;否则,返回false。/示例1:输入:s1=“bank”,s2=“kanb”输出:true解释:例如,交换s2中的第一个和最后一个

【数据结构】LRU缓存的简单模拟实现(leetcode力扣146LRU缓存)

文章目录一、定义二、LRU模拟实现二、代码实现一、定义LRU是LeastRecentlyUsed的缩写,意思是最近最少使用,它是一种Cache替换算法。Cache的容量有限,因此当Cache的容量用完后,而又有新的内容需要添加进来时,就需要挑选并舍弃原有的部分内容,从而腾出空间来放新内容。LRUCache的替换原则就是将最近最少使用的内容替换掉。二、LRU模拟实现146.LRU缓存下面我们就借力扣的这道题来简单实现一个题目中要求我们以O(1)的时间复杂度来完成,查找的话我们首先肯定会想到哈希表,但又涉及一个问题,我们查找完之后还需要更新一下刚刚查找数据的位置,将这个数据置为是新的数据,我们如何

力扣377周赛第三题(图论题目)

typedefpairPII;boolst[1100];inth[11000000],ne[11000000],w[11000000],e[11000000],idx;intdist[50][50];classSolution{public:voidadd(inta,intb,intc){e[idx]=b,ne[idx]=h[a],w[idx]=c,h[a]=idx++;}voidheap_dijkstra(intindex,intstart){dist[index][start]=0;priority_queue,greater>heap;heap.push({0,start});while

力扣416. 分割等和子集(java 动态规划)

Problem:416.分割等和子集文章目录题目描述思路解题方法复杂度Code题目描述思路该题目可以归类为0-1背包问题,具体到细节可以再归纳为背包是否装满问题1.首先判断数组元素和的奇偶性(奇数则不能划分)2.我们定义一个二维布尔类型数组,用于记录每一阶段的可选状态3.针对于动态转移方程:我们要判断最终是否可以选取一些数使其和为原来数组元素和的一半,即通过一层一层的选择数(状态转移),判断最终状态是否可达(能否有一组数使得其和为原来数组元素和的一半)每一个位置都会有选与不选两种状态,若选取则dp[i][j]==dp[i-1][j-nums[i]],若不选取则dp[i][j]==dp[i-1]

【算法】在二维不单调的矩阵上二分查找——力扣1901. 寻找峰值 II

1901.寻找峰值II文章目录【算法】在二维不单调的矩阵上二分查找——力扣1901.寻找峰值II问题描述示例解决思路步骤一:列转行步骤二:回到一维数组上的寻找峰值的思路步骤三:二分搜索代码实现二分示意图二分初始的状态二分更新说明二分更新后的状态性能分析【算法】在二维不单调的矩阵上二分查找——力扣1901.寻找峰值II问题描述给定一个从0开始编号的mxn矩阵mat,其中任意两个相邻格子的值都不相同。峰值是指那些严格大于其相邻格子(上、下、左、右)的元素。需要找出任意一个峰值mat[i][j]并返回其位置[i,j]。示例示例1:输入:mat=[[1,4],[3,2]]输出:[0,1]解释:3和4都