传说中的谷歌招聘委员会成员之一,从幕后走出来,教你学系统设计!


一亩三分地论坛

 找回密码
 获取更多干活,快来注册
天天打游戏、照样领工资、还办H1B
这份工作你要不要?
把贵司招聘信息放这里
查看: 1672|回复: 6
收起左侧

[Leetcode] 请教如何考虑全面corner case

[复制链接] |试试Instant~ |关注本帖
handsomelady 发表于 2014-11-1 00:19:32 | 显示全部楼层 |阅读模式

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干活,快来注册

x
请问大家 做题时候的corner case怎样才能考虑比较全面呢?比如Linked List问题中NULL,单一node,等等。

比如LeetCode里面 Remove Nth node from the end这道题。特殊情况有:
1. NULL , n =0
2. NULL, n>0;
3. one node, n=1;
4. one node, n=0;
5. one node, n>1;
6. general, n>length;
7. general, n= length;

已晕。各位有没有什么经验share,怎样才能考虑比较全面?

谢啦!:)
真爱你的云 发表于 2014-11-1 02:46:28 | 显示全部楼层
你说的是Remove Nth Node From End of List  这题么???
回复 支持 反对

使用道具 举报

真爱你的云 发表于 2014-11-1 02:50:03 | 显示全部楼层
我一直是用python写的 希望你可以看得明白吧
我这种思路绝对不是最好的!!!!最好的思路我看过是用两个node算出两个node的距离等于n 然后两个一起往后跑 后面的到底了就return前面那个
我的思路很SB 就是一个node跑到底 然后开始计数 然后往回跑 跑到n的位置return



# Definition for singly-linked list.
#class ListNode:
#    def __init__(self, x):
#        self.val = x
#        self.next = None

class Solution:
    # @return a ListNode
    def removeNthFromEnd(self, head, n):
        if (head == None):
            return head
        if (head.next == None):
            if(n == 1):
                head = None
                return head
            if(n == 2):
                return head.next
        temp=ListNode(0)
        temp.next = head
        self.helper(temp, 0 , n)
        return temp.next

    def helper(self, node, currentN, n):

        if (node.next != None):
            currentN = self.helper(node.next, currentN, n)
        else:
            return currentN + 1

        if (currentN == n):
            node.next = node.next.next


        return currentN + 1


回复 支持 反对

使用道具 举报

dmsehuang 发表于 2014-11-1 13:07:29 | 显示全部楼层
我也想问做test工作的人怎么去获得test case,怎么去验证test case的正确性。都是人工么?
回复 支持 反对

使用道具 举报

 楼主| handsomelady 发表于 2014-11-2 06:04:55 | 显示全部楼层
真爱你的云 发表于 2014-11-1 02:50
我一直是用python写的 希望你可以看得明白吧
我这种思路绝对不是最好的!!!!最好的思路我看过是用两个n ...

是这道题,但是我的问题不是怎么实现,而是怎样考虑全面特殊情况~~ 感觉自己常常想不全,或者花很久。想请教有么有更general的考虑边界情况的方法~
回复 支持 反对

使用道具 举报

 楼主| handsomelady 发表于 2014-11-2 06:05:09 | 显示全部楼层
dmsehuang 发表于 2014-11-1 13:07
我也想问做test工作的人怎么去获得test case,怎么去验证test case的正确性。都是人工么?

对的~ 我就是这里不明白。。。
回复 支持 反对

使用道具 举报

dmsehuang 发表于 2014-11-2 06:48:14 | 显示全部楼层
handsomelady 发表于 2014-11-2 06:05
对的~ 我就是这里不明白。。。

似乎楼主帖子没有招来牛逼tester来回答呀。
我在stackoverflow上面看了一下问题,最佳回答是说,那些top coder的思路很牛,然后他们只需要测corner case就可以了,general case一般都正确。。。我就无语了。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2017-9-24 06:08

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表