草庐IT

Leetcode_part

全部标签

leetcode 312. Burst Balloons 戳气球(困难)

一、题目大意标签:分治https://leetcode.cn/problems/burst-balloons有n个气球,编号为0到n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中。现在要求你戳破所有的气球。戳破第i个气球,你可以获得 nums[i-1]*nums[i]*nums[i+1]枚硬币。 这里的i-1和i+1代表和 i 相邻的两个气球的序号。如果i-1或i+1超出了数组的边界,那么就当它是一个数字为1的气球。求所能获得硬币的最大数量。示例1:输入:nums=[3,1,5,8]输出:167解释:nums=[3,1,5,8]-->[3,5,8]-->[3,8]-->[8]-

leetcode 932. Beautiful Array 漂亮数组(中等)

一、题目大意标签:分治https://leetcode.cn/problems/beautiful-array对于某些固定的 N,如果数组 A 是整数 1,2,...,N 组成的排列,使得:对于每个 i那么数组A 是漂亮数组。给定 N,返回任意漂亮数组 A(保证存在一个)。示例1:输入:4输出:[2,1,4,3]示例2:输入:5输出:[3,1,2,5,4]提示:1二、解题思路题解参考:https://www.cnblogs.com/grandyang/p/12287146.html分治法,按奇偶来分的话,因为奇数加偶数等于奇数,就不会是任何一个数字的2倍了。这就是奇偶分堆的好处,这时任意两个数

Leetcode 2 两数相加

一、题目  给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一数字。请你将两个数相加,并以相同形式返回一个表示和的链表。  可以假设除了数字0之外,这两个数都不会以0 开头。  示例1:    输入:l1=[2,4,3],l2=[5,6,4]    输出:[7,0,8]    解释:342+465=807.二、解法  以逆序链表的方式存储数字,非常适合于两数相加。这时候,链表头代表数字的最低位,只需从头向尾遍历,依次相加进位即可。    以最短的数的链表为终点,然后再将较长的数的后续位加入新的链表中。  Python版:classSolutio

疫情可视化part2

前言此系列已完结,共3部分:part1:https://www.cnblogs.com/xi12/p/16690119.htmlpart2:https://www.cnblogs.com/xi12/p/16864419.htmlpart3:https://www.cnblogs.com/xi12/p/16945416.html本来说有时间就把这个项目完结了的,结果后面一直有事拖着,直到现在十一月份了才搞完。老样子,先看成果。浏览链接:http://xisite.top/original/covid19-visualization/index.html#/项目链接(欢迎各位大哥star):htt

疫情可视化part2

前言此系列已完结,共3部分:part1:https://www.cnblogs.com/xi12/p/16690119.htmlpart2:https://www.cnblogs.com/xi12/p/16864419.htmlpart3:https://www.cnblogs.com/xi12/p/16945416.html本来说有时间就把这个项目完结了的,结果后面一直有事拖着,直到现在十一月份了才搞完。老样子,先看成果。浏览链接:http://xisite.top/original/covid19-visualization/index.html#/项目链接(欢迎各位大哥star):htt

两两交换链表中的节点-LeetCode24模拟节点

力扣链接:https://leetcode.cn/problems/swap-nodes-in-pairs/题目给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例1:      输入:head=[1,2,3,4]输出:[2,1,4,3]示例2:输入:head=[]输出:[]示例3:输入:head=[1]输出:[1]当拿到这个题目,我相信很多人跟我一样,比较蒙蔽了,这怎么交换啊?这个题目需要去模拟,待我一一来分析。思路  建议使用虚拟头结点,这样会方便很多,要不然每次针对头结点(没有前一个指针指向头结点),还要

两两交换链表中的节点-LeetCode24模拟节点

力扣链接:https://leetcode.cn/problems/swap-nodes-in-pairs/题目给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例1:      输入:head=[1,2,3,4]输出:[2,1,4,3]示例2:输入:head=[]输出:[]示例3:输入:head=[1]输出:[1]当拿到这个题目,我相信很多人跟我一样,比较蒙蔽了,这怎么交换啊?这个题目需要去模拟,待我一一来分析。思路  建议使用虚拟头结点,这样会方便很多,要不然每次针对头结点(没有前一个指针指向头结点),还要

leetcode 241. Different Ways to Add Parentheses 为运算表达式设计优先级(中等)

一、题目大意标签:分治https://leetcode.cn/problems/different-ways-to-add-parentheses给你一个由数字和运算符组成的字符串 expression,按不同优先级组合数字和运算符,计算并返回所有可能组合的结果。你可以按任意顺序返回答案。生成的测试用例满足其对应输出值符合32位整数范围,不同结果的数量不超过104。示例1:输入:expression="2-1-1"输出:[0,2]解释:((2-1)-1)=0(2-(1-1))=2示例2:输入:expression="23-45"输出:[-34,-14,-10,-10,10]解释:(2(3-(4

leetcode 53. Maximum Subarray 最大子数组和(中等)

一、题目大意标签:动态规划https://leetcode.cn/problems/maximum-subarray给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。示例1:输入:nums=[-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1]的和最大,为 6。示例2:输入:nums=[1]输出:1示例3:输入:nums=[5,4,-1,7,8]输出:23提示:1-104进阶:如果你已经实现复杂度为O(n)的解法,尝试使用更为精妙的分治法求解。二、解题思路定义一个max保存遍

leetcode 650. 2 Keys Keyboard 只有两个键的键盘(中等)

一、题目大意标签:动态规划https://leetcode.cn/problems/2-keys-keyboard最初记事本上只有一个字符'A'。你每次可以对这个记事本进行两种操作:CopyAll(复制全部):复制这个记事本中的所有字符(不允许仅复制部分字符)。Paste(粘贴):粘贴上一次复制的字符。给你一个数字 n,你需要使用最少的操作次数,在记事本上输出恰好 n 个'A'。返回能够打印出 n 个'A'的最少操作次数。示例1:输入:3输出:3解释:最初,只有一个字符'A'。第1步,使用CopyAll操作。第2步,使用Paste操作来获得'AA'。第3步,使用Paste操作来获得'AAA'。