1.题目设计一个类似堆栈的数据结构,将元素推入堆栈,并从堆栈中弹出出现频率最高的元素。实现 FreqStack 类:FreqStack() 构造一个空的堆栈。voidpush(intval) 将一个整数 val 压入栈顶。intpop() 删除并返回堆栈中出现频率最高的元素。如果出现频率最高的元素不只一个,则移除并返回最接近栈顶的元素。 示例1:输入:["FreqStack","push","push","push","push","push","push","pop","pop","pop","pop"],[[],[5],[7],[5],[7],[4],[5],[],[],[],[]]输出:
力扣链接:https://leetcode.cn/problems/spiral-matrix-ii/题目 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 nxn 正方形矩阵 matrix 。 示例1: 输入:n=3输出:[[1,2,3],[8,9,4],[7,6,5]] 示例2:输入:n=1输出:[[1]] 刚开始拿到这个题目,我想大家跟我一样,应该是很懵逼的状态,我只知道要从左到右,从上到下,但是具体怎么弄,我也不太会,属实是一看就会,一写就废。 由外向内一圈一圈这么画下去。可以发现这里的边界条件非常多,在一个循环中,如此多的边界条
力扣链接:https://leetcode.cn/problems/spiral-matrix-ii/题目 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 nxn 正方形矩阵 matrix 。 示例1: 输入:n=3输出:[[1,2,3],[8,9,4],[7,6,5]] 示例2:输入:n=1输出:[[1]] 刚开始拿到这个题目,我想大家跟我一样,应该是很懵逼的状态,我只知道要从左到右,从上到下,但是具体怎么弄,我也不太会,属实是一看就会,一写就废。 由外向内一圈一圈这么画下去。可以发现这里的边界条件非常多,在一个循环中,如此多的边界条
题目信息源地址:两数之和给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。提示信息示例1输入:nums=[2,7,11,15],target=9输出:[0,1]解释:因为nums[0]+nums[1]==9,返回[0,1]。示例2输入:nums=[3,2,4],target=6输出:[1,2]示例3输入:nums=[3,3],target=6输出:[0,1]限制2-10^9-10^9只会存在一个有效答案实现逻辑
一、题目大意标签:贪心https://leetcode.cn/problems/assign-cookies假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干j,都有一个尺寸s[j] 。如果s[j] >=g[i],我们可以将这个饼干j分配给孩子i,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。示例 1:输入:g=[1,2,3],s=[1,1]输出:1解释:你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。虽然你有两块小饼干,由
一、题目大意标签:分治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]-
一、题目大意标签:分治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倍了。这就是奇偶分堆的好处,这时任意两个数
一、题目 给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一数字。请你将两个数相加,并以相同形式返回一个表示和的链表。 可以假设除了数字0之外,这两个数都不会以0 开头。 示例1: 输入:l1=[2,4,3],l2=[5,6,4] 输出:[7,0,8] 解释:342+465=807.二、解法 以逆序链表的方式存储数字,非常适合于两数相加。这时候,链表头代表数字的最低位,只需从头向尾遍历,依次相加进位即可。 以最短的数的链表为终点,然后再将较长的数的后续位加入新的链表中。 Python版:classSolutio
题目信息源地址:两数之和给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。提示信息示例1输入:nums=[2,7,11,15],target=9输出:[0,1]解释:因为nums[0]+nums[1]==9,返回[0,1]。示例2输入:nums=[3,2,4],target=6输出:[1,2]示例3输入:nums=[3,3],target=6输出:[0,1]限制2-10^9-10^9只会存在一个有效答案实现逻辑
一、题目大意标签:贪心https://leetcode.cn/problems/assign-cookies假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干j,都有一个尺寸s[j] 。如果s[j] >=g[i],我们可以将这个饼干j分配给孩子i,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。示例 1:输入:g=[1,2,3],s=[1,1]输出:1解释:你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。虽然你有两块小饼干,由