题目描述给你一个整数数组nums,请你选择数组的两个不同下标i和j,使(nums[i]-1)*(nums[j]-1)取得最大值。请你计算并返回该式的最大值。示例1:输入:nums=[3,4,5,2]输出:12解释:如果选择下标i=1和j=2(下标从0开始),则可以获得最大值,(nums[1]-1)*(nums[2]-1)=(4-1)*(5-1)=3*4=12。示例2:输入:nums=[1,5,4,5]输出:16解释:选择下标i=1和j=3(下标从0开始),则可以获得最大值(5-1)*(5-1)=16。示例3:输入:nums=[3,7]输出:12提示:2来源:力扣(LeetCode)链接:htt
题目描述给你一个整数数组nums,请你选择数组的两个不同下标i和j,使(nums[i]-1)*(nums[j]-1)取得最大值。请你计算并返回该式的最大值。示例1:输入:nums=[3,4,5,2]输出:12解释:如果选择下标i=1和j=2(下标从0开始),则可以获得最大值,(nums[1]-1)*(nums[2]-1)=(4-1)*(5-1)=3*4=12。示例2:输入:nums=[1,5,4,5]输出:16解释:选择下标i=1和j=3(下标从0开始),则可以获得最大值(5-1)*(5-1)=16。示例3:输入:nums=[3,7]输出:12提示:2来源:力扣(LeetCode)链接:htt
一、题目大意请你设计并实现一个满足LRU(最近最少使用)缓存约束的数据结构。实现LRUCache类:LRUCache(intcapacity)以正整数作为容量capacity初始化LRU缓存intget(intkey)如果关键字key存在于缓存中,则返回关键字的值,否则返回-1。voidput(intkey,intvalue)如果关键字key已经存在,则变更其数据值value;如果不存在,则向缓存中插入该组key-value。如果插入操作导致关键字数量超过capacity,则应该逐出最久未使用的关键字。函数get和put必须以O(1)的平均时间复杂度运行。示例:输入["LRUCache","p
一、题目大意请你设计并实现一个满足LRU(最近最少使用)缓存约束的数据结构。实现LRUCache类:LRUCache(intcapacity)以正整数作为容量capacity初始化LRU缓存intget(intkey)如果关键字key存在于缓存中,则返回关键字的值,否则返回-1。voidput(intkey,intvalue)如果关键字key已经存在,则变更其数据值value;如果不存在,则向缓存中插入该组key-value。如果插入操作导致关键字数量超过capacity,则应该逐出最久未使用的关键字。函数get和put必须以O(1)的平均时间复杂度运行。示例:输入["LRUCache","p
一、题目大意实现RandomizedSet类:RandomizedSet()初始化RandomizedSet对象boolinsert(intval)当元素val不存在时,向集合中插入该项,并返回true;否则,返回false。boolremove(intval)当元素val存在时,从集合中移除该项,并返回true;否则,返回false。intgetRandom()随机返回现有集合中的一项(测试用例保证调用此方法时集合中至少存在一个元素)。每个元素应该有相同的概率被返回。你必须实现类的所有函数,并满足每个函数的平均时间复杂度为O(1)。示例:输入["RandomizedSet","insert"
一、题目大意实现RandomizedSet类:RandomizedSet()初始化RandomizedSet对象boolinsert(intval)当元素val不存在时,向集合中插入该项,并返回true;否则,返回false。boolremove(intval)当元素val存在时,从集合中移除该项,并返回true;否则,返回false。intgetRandom()随机返回现有集合中的一项(测试用例保证调用此方法时集合中至少存在一个元素)。每个元素应该有相同的概率被返回。你必须实现类的所有函数,并满足每个函数的平均时间复杂度为O(1)。示例:输入["RandomizedSet","insert"
题目信息源地址:三数之和给你一个包含n个整数的数组nums,判断nums中是否存在三个元素a,b,c,使得a+b+c=0,请你找出所有和为0且不重复的三元组。注意:答案中不可以包含重复的三元组。提示信息示例1输入:nums=[-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例2输入:nums=[]输出:[]示例3输入:nums=[0]输出:[]限制0-105实现逻辑暴力枚举最先想到的应该是暴力枚举的方法,当然这也是最简单的的方法。既然这里要找出符合要求的三个数,当然是使用三层循环依次去匹配,缺点就是时间复杂度达到了\(O(n^3)\),当数组长度特别长的时候,程序
题目信息源地址:三数之和给你一个包含n个整数的数组nums,判断nums中是否存在三个元素a,b,c,使得a+b+c=0,请你找出所有和为0且不重复的三元组。注意:答案中不可以包含重复的三元组。提示信息示例1输入:nums=[-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例2输入:nums=[]输出:[]示例3输入:nums=[0]输出:[]限制0-105实现逻辑暴力枚举最先想到的应该是暴力枚举的方法,当然这也是最简单的的方法。既然这里要找出符合要求的三个数,当然是使用三层循环依次去匹配,缺点就是时间复杂度达到了\(O(n^3)\),当数组长度特别长的时候,程序
题目题目链接:593.有效的正方形题意:给出二维平面上四个点的坐标,判断这四个点是否能构成一个正方形,四个点的输入顺序不做任何保证。思路通过向量运算可以很轻松地解决这道题。任取一点向其他三点连线,可以得到三个向量。我们将这三个向量按照其长度从小到大排序,分别称为\(\boldsymbol{v}_0,\boldsymbol{v}_1,\boldsymbol{v}_2\),若满足以下三个条件,则\(\boldsymbol{v}_0,\boldsymbol{v}_1,\boldsymbol{v}_2\)可以“张出”一个正方形(见下图):\(\boldsymbol{v}_0+\boldsymbol{v
题目题目链接:593.有效的正方形题意:给出二维平面上四个点的坐标,判断这四个点是否能构成一个正方形,四个点的输入顺序不做任何保证。思路通过向量运算可以很轻松地解决这道题。任取一点向其他三点连线,可以得到三个向量。我们将这三个向量按照其长度从小到大排序,分别称为\(\boldsymbol{v}_0,\boldsymbol{v}_1,\boldsymbol{v}_2\),若满足以下三个条件,则\(\boldsymbol{v}_0,\boldsymbol{v}_1,\boldsymbol{v}_2\)可以“张出”一个正方形(见下图):\(\boldsymbol{v}_0+\boldsymbol{v