牢骚&安利题目

感觉自己越来越蠢了

  • 最近做leetcode的题,做一题卡一题。
  • 于是乎我就来安利几道题吧(就是我自己没想出来或者没写出来)。

84. Largest Rectangle in Histogram

题意描述
给出一个长度为n的非负整数序列A。Ai表示一个宽度为1,高度为Ai的矩形。现在这n个矩形全都下对齐地紧挨在一起,求整个图的最大矩形面积。

算法分析
具体就是用一个栈维护一个上升高度序列,当某个高度下降时,就逐个出栈并统计面积。
这题难点其实是在细节处理上。并不是说很容易就想到用栈去做,而是想到某一种数据结构去维护,但是怎么维护、怎么求解?我的话,也想过用栈,但没想到怎么做,于是乎最后我还是去找了一下discuss。。
时间复杂度:O(n)

85. Maximal Rectangle

就是上一题的强化版,从序列变成了矩阵。
方法就是枚举每一行,用上一题的方法求解即可。
时间复杂度:O(n^2)

164. Maximum Gap

题意描述
给出长度为n的乱序非负序列,问若将该序列变为有序序列,相邻两个数的最大差值是多少。要求在线性时间复杂度和空间复杂度下求解。

算法分析
我先说这题最重要的一个结论吧。(就是因为没想到这个啊结果我做不出来啊,果然智商低了)
设最大的数字是A,最小的数字是B,根据抽屉原理,我们可以知道排序后相邻两个数字差值的最大值p有:
p>=(AB)/(n1)
那么这题就可以在线性时间内求解了。
首先,我们将数值分为n-1段,数值i根据自己的大小就会放在第j段中。
j=(iB)/(n1)
根据我们前面的结论可以知道,差值的最大值一定不会出现在同一段的两个数字之间。
因此我们只需要维护每一段的最大值和最小值。最后答案一定是某一个有效段的最小值与其前一个有效段的最大值的差值。
所谓有效段,即使说该段中存在数字,因为很可能有很多段中是并没有数字的。
时间复杂度:O(n)

324. Wiggle Sort II

题目描述
给出一个乱序序列nums,我们需要将里面的元素进行位置变换,使得:nums[0] < nums[1] > nums[2] < nums[3]……

Example:
(1) Given nums = [1, 5, 1, 1, 6, 4], one possible answer is [1, 4, 1, 5, 1, 6].
(2) Given nums = [1, 3, 2, 2, 3, 1], one possible answer is [2, 3, 1, 3, 1, 2]. 

题目保证有解,要求是用O(n)的时间,O(1)的额外空间求解。

牢骚
这题似乎可以不断的贪心+分类讨论求解。但是我想了很久都没有想得很明白,细节太多了。对每种情况讨论的过程中又会衍生新的情况和问题。总之剪不断理还乱。
于是乎我把这题安利给的xy同学。xy大腿用什么快选中位数+什么函数映射的方法似乎做出来了。但是他跑得特别慢,比用O(nlogn)排序再开O(n)空间生成新序列都慢得多。他的理由是那个函数映射怎么怎么太慢了。。
于是乎这题就死了。

为什么在html页面点击选择之后进行表单的提交,不能跳转到相应的asp页面中!!求求帮忙!! 这是html部分的代码: &lt;!DOCTYPE html&gt; &lt;html lang=&quot;en&quot;&gt; &lt;head&gt; &lt;meta charset=&quot;UTF-8&quot;&gt; &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt; &lt;title&gt;性格测试&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;form method=&quot;get&quot; action=&quot;grade.asp&quot;&gt; &lt;p&gt;从排队看你的性格类型?&lt;/p&gt; &lt;p&gt;通常在排队的时候你来晚了,下面哪种方式属于你或者是与你比较接近?请选择一种:&lt;/p&gt; &lt;a href=&quot;grade.asp?choice=1&quot;&gt;&lt;input type=&quot;radio&quot; name=&quot;choice&quot; value=&quot;1&quot;&gt;(1)规规矩矩地排在最后一个。&lt;/a&gt;&lt;br&gt; &lt;a href=&quot;grade.asp?choice=2&quot;&gt;&lt;input type=&quot;radio&quot; name=&quot;choice&quot; value=&quot;2&quot;&gt;(2)面带微笑,随便排在最后。&lt;/a&gt;&lt;br&gt; &lt;a href=&quot;grade.asp?choice=3&quot;&gt;&lt;input type=&quot;radio&quot; name=&quot;choice&quot; value=&quot;3&quot;&gt;(3)满腹牢骚,怪自己来得太晚或是排队的 人太多,并试着去加塞,别人不让还不高兴,甚至与人争吵。&lt;/label&gt;&lt;/a&gt;&lt;br&gt; &lt;a href=&quot;grade.asp?choice=4&quot;&gt;&lt;input type=&quot;radio&quot; name=&quot;choice&quot; value=&quot;4&quot;&gt;(4)不加塞,帮着维持秩序或者是加塞,呵斥别人让开点。&lt;/a&gt; &lt;br&gt;&lt;br&gt; &lt;input type=&quot;submit&quot; value=&quot;已选好,看看结论&quot;&gt; &lt;input type=&quot;reset&quot; value=&quot;重新选&quot;&gt; &lt;/form&gt; &lt;/body&gt; &lt;/html&gt; 这是asp部分的代码: &lt;%@ LANGUAGE=&quot;VBScript&quot; %&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset=&quot;UTF-8&quot;&gt; &lt;title&gt;结果&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;% Dim a a = Request.QueryString(&quot;choice&quot;) Select Case CInt(a) Case 1 Response.Write &quot;1完美型&quot; Case 2 Response.Write &quot;2平和型&quot; Case 3 Response.Write &quot;3活泼型&quot; Case 4 Response.Write &quot;4领导型&quot; End Select %&gt; &lt;/body&gt; &lt;/html&gt;
05-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值