草庐IT

【每日力扣】最大交换(两种解法/自定义后序index函数)

题目最大交换给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。示例1:输入:2736输出:7236解释:交换数字2和数字7。示例2:输入:9973输出:9973解释:不需要交换。思路&code解法一:暴力解法思路    首先,最暴力的一种解法把每种一次交换之后的结果都写出来,最后在里面找到最大的那个结果。没什么好说的,直接上代码。正确代码classSolution:defmaximumSwap(self,num:int)->int:n=list(str(num))ma=numforiinrange(len(n)):forjinrange(i):n[i],n[j]=n[

【算法】【Python3、动态规划、贪心、二分查找】力扣1671. 得到山形数组的最少删除次数

1671.得到山形数组的最少删除次数文章目录【算法】【动态规划、贪心、二分查找】力扣1671.得到山形数组的最少删除次数问题描述问题解析示例解法一:动态规划解法二:贪心+二分总结【算法】【动态规划、贪心、二分查找】力扣1671.得到山形数组的最少删除次数问题描述给定一个整数数组nums,我们定义该数组为山形数组当且仅当:nums的长度至少为3。存在一个下标i满足0且:nums[0]nums[i]>nums[i+1]>...>nums[len(nums)-1]现在,给定整数数组nums,我们的目标是将其变为山形数组,问最少删除多少个元素。问题解析正难则反,我们可以反过来思考原本的nums数组中能

力扣433. 最小基因变化

广度优先搜索思路:经过分析可知,基因A突变到基因B,需要满足以下条件:序列A与序列B只有一个字符不同;变化字符在集合中;突变后的基因B一定在bank中;尝试搜索所有合法突变的基因集合,并找到最小突变次数:如果start与end相等,没有突变,次数为0;如果end不在bank中,则无法生成,次数为-1;可能变化的基因集合s从队列中取出,根据上述突变规则,尝试所有可能变化后的基因序列;(遍历位置、字符)突变的基因s(i)需要合法,所以需要在bank集合中,可以将bank转成一个哈希表加速检索,合法的基因加入队列中,不合法的丢弃;同时,需要一个哈希表记录已经被检索过的基因,检索过的基因直接跳过;如果

力扣-135.分发糖果

135.分发糖果n个孩子站成一排。给你一个整数数组ratings表示每个孩子的评分。你需要按照以下要求,给这些孩子分发糖果:每个孩子至少分配到1个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。请你给每个孩子分发糖果,计算并返回需要准备的最少糖果数目。示例1:输入:ratings=[1,0,2]输出:5解释:你可以分别给第一个、第二个、第三个孩子分发2、1、2颗糖果。示例2:输入:ratings=[1,2,2]输出:4解释:你可以分别给第一个、第二个、第三个孩子分发1、2、1颗糖果。第三个孩子只得到1颗糖果,这满足题面中的两个条件。提示:n==ratings.length10方法1:第一次正

力扣刷MySQL-第七弹(详细讲解)

 🎉欢迎您来到我的MySQL基础复习专栏☆*o(≧▽≦)o*☆哈喽~我是小小恶斯法克🍹✨博客主页:小小恶斯法克的博客🎈该系列文章专栏:力扣刷题讲解-MySQL🍹文章作者技术和水平很有限,如果文中出现错误,希望大家能指正🙏📜感谢大家的关注! ❤️​​​目录 🚀销售员 🚀判断三角形 🚀回顾case和if语法  🚀销售员表: SalesPerson+-----------------+---------+|ColumnName|Type|+-----------------+---------+|sales_id|int||name|varchar||salary|int||commission_r

力扣精选算法100题——水果成篮(滑动窗口专题)

本题链接👉水果成篮第一步:了解题意我就按照实例1来进行对这题的理解。1代表种类类型,这个数组里面有2个种类类型ps:种类1和种类2,只不过种类1是有2个水果,种类2有一个水果,共计3个水果。本题需要解答:收集水果的最大数目.但是前提条件:我们只有2个篮子,每个篮子里只能装1种类型,但是篮子里的数量是不限制的。每采摘一次,将会可以向右移动到下一棵树,并继续采摘,不能跳过一棵树2个篮子表示着我们只能容纳2个类型的,出现第3类型的苹果,我们就直接结束采摘就按实例3来表示:fruits[1,2,3,2,2] 1,2,遇到3的时候,这就是我们遇到的第三种类型水果了,那么我们就需要停止,这时候就可以记录一

力扣白嫖日记(sql)

前言练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。今日题目:1068.产品销售分析I销售表:Sales列名类型sale_idintproduct_idintyearintquantityintpriceint(sale_id,year)是销售表Sales的主键(具有唯一值的列的组合)。product_id是关联到产品表Product的外键(reference列)。该表的每一行显示product_id在某一年的销售情况。注意:price表示每单位价格。产品表:Product列名类型product_idin

力扣【四数之和】

 一、题目描述18. 四数之和给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a],nums[b],nums[c],nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):0a、b、c 和 d 互不相同nums[a]+nums[b]+nums[c]+nums[d]==target你可以按 任意顺序 返回答案。二、题目解析算法思想:排序+双指针1、依次固定一个数a;2、在a后面的区间内,用“三数之和”找到三个数,使用这三个数的和等于target-a即可同理,对于三数之和的算法:1、依次固定一个数

力扣刷MySQL-第二弹(详细解析)

 🎉欢迎您来到我的MySQL基础复习专栏☆*o(≧▽≦)o*☆哈喽~我是小小恶斯法克🍹✨博客主页:小小恶斯法克的博客🎈该系列文章专栏:力扣刷题讲解-MySQL🍹文章作者技术和水平很有限,如果文中出现错误,希望大家能指正🙏📜感谢大家的关注! ❤️​​目录🚀查找重复的电子邮箱🚀查找没有买东西的顾客🚀总结 🚀查找重复的电子邮箱表: Person+-------------+---------+|ColumnName|Type|+-------------+---------+|id|int||email|varchar|+-------------+---------+id是该表的主键(具有唯一值的

力扣每日一练(24-1-20)

    大脑里的第一想法是排列组合,直接给出超级准确的最优解。    但不适用,hhh    只要连续的n个元素大于或者等于target就可以了    题目比自己想象的要好解决    解法是使用滑动窗口算法。这个算法的基本思想是维护一个窗口,使得窗口内的元素总和大于等于目标值,然后尝试缩小窗口以找到最小的满足条件的子数组。PythonclassSolution:defminSubArrayLen(self,target:int,nums:List[int])->int:n=len(nums)ans=n+1start=0end=0total=0whileend=target:ans=min(an