V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
wezzard
V2EX  ›  iDev

一到算法題的解答,求拍磚

  •  
  •   wezzard · 2015-06-11 09:51:54 +08:00 · 3286 次点击
    这是一个创建于 3482 天前的主题,其中的信息可能已经有所发展或是发生改变。
    這是前幾天我遠程機試時的一道算法題,當時腦子整個是糊的,所以根本想不出來。後來昨天打了幾把風暴英雄之後又想了想——尼瑪不就是一個升級版的二分搜索嗎!?於是自己寫了一個出來,求各位算法大神拍磚。語言是 Swift 2.0。

    題目:

    在循环有序整数数组中查找指定元素,也就是说在类似这样的{12,16,18,20,41,100,1,4,6,9}整数数组中查找指定的元素
    (找出一个返回下标即可)

    解答:



    另外,機試時對方問到了算法複雜度,我不知道怎麼算……請問我現在這樣寫的算法複雜度還是O(log n)麼?……
    13 条回复    2015-06-11 18:26:58 +08:00
    stackpop
        1
    stackpop  
       2015-06-11 10:00:30 +08:00
    以前做过

    https://github.com/sjtubinlong/Programming-Challenges/tree/master/leetcode

    你看看

    Search_in_Rotated_Sorted_Array
    Search_in_Rotated_Sorted_Array_II

    两道题
    n0o0a0h0
        2
    n0o0a0h0  
       2015-06-11 10:01:14 +08:00
    不懂swift啊 如果是C++ 就将数组和下标存在map或者是unordered_map(后面查找速度快很多)。很简单的。
    stackpop
        3
    stackpop  
       2015-06-11 10:02:08 +08:00
    最坏是 O(N), 平均是 O(lgN)
    stackpop
        4
    stackpop  
       2015-06-11 10:04:57 +08:00
    @n0o0a0h0 你这个时间复杂度是 O(1), 空间复杂度是 O(n), 一般面试会要求你写 O(lgN)的算法
    n0o0a0h0
        5
    n0o0a0h0  
       2015-06-11 10:21:17 +08:00
    @stackpop 诶 最烦 算法 O(lgN) O(n) O(1), %>_<%😢
    black
        6
    black  
       2015-06-11 10:30:47 +08:00
    @stackpop 他这种算法时间复杂度怎么可能O(1)...
    black
        7
    black  
       2015-06-11 10:31:34 +08:00
    @stackpop 建立map的时间复杂度也要考虑,是O(n)才对
    aheadlead
        8
    aheadlead  
       2015-06-11 10:53:32 +08:00
    二分断点
    liuchang0812
        9
    liuchang0812  
       2015-06-11 11:02:41 +08:00
    leetcode 原题
    Golevka
        10
    Golevka  
       2015-06-11 11:07:23 +08:00
    这种东西就是需要判断的case多一点而已, 写出空间O(1)时间O(logN)的应该没什么难度

    P.S. 我们在leetcode上都是20行以内A过的不明白你为什么洋洋洒洒写了这么多.
    shuax
        11
    shuax  
       2015-06-11 11:21:59 +08:00
    一个二分真的需要写这么多吗
    GtDzx
        12
    GtDzx  
       2015-06-11 11:27:24 +08:00
    楼主申请的哪家公司啊? 还有远程机试。
    caoyue
        13
    caoyue  
       2015-06-11 18:26:58 +08:00
    看来刷刷 LeetCode 还是有用的=-=
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2862 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:22 · PVG 22:22 · LAX 06:22 · JFK 09:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.