自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 【Leetcode】462. Minimum Moves to Equal Array Elements II 462. 最少移动次数使数组元素相等 II

解法记录一下,是个好题,解法超多首先需要明确的是,最后相同的那个数值一定是数组中的元素,因为这样能省下一些跳数解法一:暴力略解法二:排序+求和当我们以nums[i]作为最后的结果的时候,那么前面的数都不超过nums[i],所以前面的数的总步骤为nums[i]*i-sum(nums[:i]),后面的数都不小于nums[i],后面的数的总步骤为sum(nums[i:])-nums[i]...

2019-04-16 22:10:48 179

原创 【Leetcode】853. Car Fleet 853. 车队

解法首先,把车按距终点的远近排。那么,一号车肯定是它属于的车队最后到终点时的状态。如果二号车追不上它,那么一号车自己一个车队,问题转化成少了一号车的另一个小问题。假如二号车能追上一号车,那么一号跟二号就一个车队了,这时候对于三号车来说:要注意,如果三号车能追上二号车,那它一定能追上一号车,它的逆否命题是,如果三号车追不上一号车,那么它一定追不上二号车。所以,对三号车来说,只要它能追上一...

2019-04-16 11:27:44 181

原创 【Leetcode】324. Wiggle Sort II 324. 摆动排序 II

解法基本框架是要形成一个模式:偶数位放较小数(前半),奇数位放较大数(后半),由于前半的最大和后半的最小有可能相等【它们一定都是中位数】,那么要把前半的最大和后半的最小分开,最好的方法就是分别放在两头解法一:基于排序首先得到排好序的数组,然后:偶数位递减放置前半,这样前半的最大在左边奇数位递减放置后半,这样后半的最小一定在右边为什么不同时递增呢?这样不是就形成【前半的最大在左...

2019-04-11 22:04:11 199

原创 【Leetcode】754. Reach a Number 754. 到达终点数字

解法对于负数,它的解跟正数的解一样,所以只要解正数就可以了首先我们走n步,直到sum=1+...+n>=target。计算diff = target-sum如果diff是偶数,那么diff/2一定在[1,n]之间,只要把+diff/2改成-diff/2,总和就会减少diff了,所以步数为n如果diff是奇数:如果再走一步差就变成偶数了,即sum+(n+1)-target为偶...

2019-04-06 15:42:16 192

原创 【Leetcode】327. Count of Range Sum 327. 区间和的个数

解法naive的方法是O(n2)O(n^2)O(n2)的要找更高效的方法,都离不开先计算出一个前缀和数组p,然后对于每个元素p[i],要计算i以后有多少个元素在[p[i]+lower,p[i]+upper]范围内解法一:归并排序在merge的过程中会得到两个有序的数组L,R对于L里的每个元素a,需要在R里找到[a+lower,a+upper]范围里的元素的个数,由于R是有序的,所以用尺...

2019-04-06 13:54:07 875

原创 【Leetcode】699. Falling Squares 699. 掉落的方块

解法要说难其实也不难……O(n2)O(n^2)O(n2)的方法都可以过解法一:暴力每放下一个方块,记录一下放下后这个方块顶端高度,它由两部分组成:一是方块自己的高度,二是以前放下的与该方块相交的方块的顶端高度的最大值,由这两部分相加构成得到每个方块放下时的顶端高度之后,最后的ans数组就是这个高度数组的前缀最大值数组class Solution(object): def f...

2019-04-06 01:01:34 517

原创 【Leetcode】282. Expression Add Operators 282. 给表达式添加运算符

解法首先,假如每个数字只有一位,那么算法很简单,回溯,遍历每个缝隙的符号值(+\-\*),遍历完毕之后看最后得到的表达式的值是不是target接着,现在每个数字可以有1位以上,所以遍历的选择要多一个,就是除了"+"``"-"``"*"之外,还有""空串。如果每到终点用eval等函数重新计算时间很很慢,所以要动态地追踪表达式的值如果只有+和-,是很容易追溯的。如果有*的话,可以这么算,...

2019-04-03 23:30:59 363

原创 【Leetcode】188. Best Time to Buy and Sell Stock IV 188. 买卖股票的最佳时机 IV

解法参考:https://blog.csdn.net/danielrichard/article/details/75091410从上次那个两个交易里扩展出来的上次的解法为:firstBuy[i] = max(firstBuy[i - 1], -prices[i]) # 在前i天完成至多1次买入firstSell[i] = max(firstSell[i - 1], firstB...

2019-04-03 20:31:10 111

原创 【Leetcode】274. H-Index 274. H指数

解法解法一:基于比较的排序首先把数组排序一下,然后找到一个最大的h,使得nums[n-h]>=h,二分查找即可这是O(nlogn)O(nlogn)O(nlogn)的class Solution(object): def hIndex(self, citations): """ :type citations: List[int] ...

2019-04-03 15:44:27 115

原创 【Leetcode】4. Median of Two Sorted Arrays 4. 寻找两个有序数组的中位数

解法假如我们把A分成A[:i]和A[i:]两部分,同理把B分成B[:j]和B[j:]两部分我们让A[:i]+B[:j]归为左边,A[i:]+B[j:]归为右边如果:左边和右边数字的个数相差不超过1左边的数字全比右边小那么中位数将在左边的最大值和右边的最小值之间产生。不妨令左边总是数量少的那方,即左边要么比右边少1,要么与右边相等。很容易可以计算出,i+j==(m+n)//2...

2019-04-03 01:12:25 130

原创 【Leetcode】803. Bricks Falling When Hit 803. 打砖块

解法先把所有该消的都消掉,现在和第一行相通的点都是“稳定点”然后把消除顺序反过来遍历一遍当把(i,j)恢复成1之后,它会把它四个方向上的集合连通假如连通完毕后“稳定点”所在的那个集合的的点的个数上涨了x个(x一定大于1),说明消除(i,j)使得有x-1个点从“稳定点”变得不稳定了,那也就是这次消除后drop的数量class Solution(object): def hitB...

2019-04-02 23:57:24 571

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除