程序员的自我修养
Home » Java语言 » LeetCode编程练习(2)

LeetCode编程练习(2)

7条评论10,059次浏览

Max Points on a Line

题目

Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.

答案

思路:时间复杂度O(n^3)的情况下是肯定可以算出结果的,那么意味着通过空间换时间应该是可以让时间复杂度达到O(n^2),这是我自己发明的定律。首先定义静态内部类Line,用于表示两点计算出来的直线,考虑到Double类型的精度损失问题,Line采用三个属性来保证精度上的完整性。然后重写hashCode()equals(..)方法,使得同一条直线相等,且在Hash值上相等。如此通过2个 \(n(n-1)\over 2\) 次循环即可获取到结果,时间复杂度为O(n^2)。

Trapping Rain Water

题目

Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining.

For example, Given [0,1,0,2,1,0,1,3,2,1,2,1], return 6.
rainwatertrap

答案

思路:若在最尾端添加一个无限高的bar,则整个题目变的十分容易:由于最后一个bar是无限高的,所以盛下水后的形状就是一个梯度上升的阶梯状,只需要扫面一遍,遇到比当前最大值小的则表示可以盛下水。现在的问题是,没有这么一块无限高的bar,那怎么办?很简单,扫面一遍,找出最高的bar,然后以此为分界线,看成是2个带有无限高bar的阶梯状就OK了。

Word Break II

题目

Given a string s and a dictionary of words dict, add spaces in s to construct a sentence where each word is a valid dictionary word.

Return all such possible sentences.

For example, given

s = "catsanddog",

dict = ["cat", "cats", "and", "sand", "dog"].

A solution is ["cats and dog", "cat sand dog"].

答案

思路:没有思路,递归+一个Stack就可以了。时间复杂度,应该是O(n^2)?

吐槽:采用前序遍历+深度优先方式会出现Time Limit Exceeded,原因是有一个测试用例是:"aaaaaaaaaaa..aaab",["a","aa","aaa","aaaa",...,"aaaaaaaaaa"]。所以采用前序深度遍历会出现超时。采用后续是不是则不会遇到这个问题?必须不是,只是刚好没有类似"baaaaaaaaaaa..aaa",["a","aa","aaa","aaaa",...,"aaaaaaaaaa"]这样的测试用例而已。

那么问题来了:要是有这样的用例该怎么办?(吐槽能让你吐出好程序么。。)

(转载本站文章请注明作者和出处 程序员的自我修养 – SelfUp.cn ,请勿用于任何商业用途)
分类:Java语言
标签:,
7条评论
  1. ashley说道:

    இдஇ #求何总添加留言表情#

    • Vina说道:

      Voor je lijf, niet je gezicht! Deze scrub is juist zo mild dat je hem elke dag kunt gebruiken. Niet dat ik dagelijks scrub, want mijn douche staat te vol met allemaal fijne dopuueschllen ;)De tube bevat 200 ml, minder klein dan ie lijkt dus :)

发表评论


profile
  • 文章总数:81篇
  • 评论总数:247条
  • 分类总数:32个
  • 标签总数:45个
  • 运行时间:1250天

大家好,欢迎来到selfup.cn。

这不是一个只谈技术的博客,这里记录我成长的点点滴滴,coding、riding and everthing!

最新评论
  • Anonymous: :?: :razz: :sad:
  • Anonymous: 牛
  • Anonymous: 楼主你好,我偶尔也会 遇到Reconnect due to socket error: java.nio.channels.ClosedCha...
  • Anonymous: sdfs
  • Anonymous: :arrow: :neutral: :cry:
  • Anonymous: java.io.NotSerializableExcepti on: DStream checkpointing has been enabled but the DStreams with their...
  • wick: HI,请问一下,U,S,V得到 ,怎么得到近似矩阵 (用spark java),谢谢。
  • Michael Whitaker: Thank you for this blog, it was very helpful in troubleshooting my own issues. It seems that no...
  • Anonymous: :mad:
  • Anonymous: :???:
  • Anonymous: :mad: :mad: :mad:
  • 洋流: 哥们,我问个问题,你 把testOnborrow去掉了。。 如果得到的jedis资源...
  • 洋流: 哥们,我问个问题,你 把testOnborrow去掉了。。 如果得到的jedis资源...
  • Anonymous: :razz: :evil: :grin:
  • 张瑞昌: 有很多,比较常见的是 Jacob迭代法,一次迭代O (n^3),迭代次数不清楚 ...
  • Anonymous: :mrgreen:
  • lc277: 你好 我想问下一般删除节点 要多久,要删除的datano de大概用了1t,解除...
  • Anonymous: 你好 我想问下一般删除节点 要多久,要删除的datano de大概用了1t,解除...
  • Anonymous: :smile: :grin: :eek:
  • 李雪璇: 想要完整代码,可以帮 忙发给我吗