题解 | #缺失数字# -- 【Python3】

缺失数字

http://www.nowcoder.com/practice/9ce534c8132b4e189fd3130519420cde

方法1:暴力破解

  1. 判断数组下标和数组值是否一致
  2. 如果不一致,说明跳过了一个,返回下标即可
  3. 如果所有都一致,说明缺少最后一个,返回数组长度即可
    class Solution:
     def solve(self , a ):
         # write code here
         for i, v in enumerate(a):
             if i != v:
                 return i
         return len(a)

    方法2:二分法

    class Solution:
     def solve(self , a ):
         # write code here
         n = len(a)
         if n == 0:
             return 0
         if a[-1] + 1 == n: return n
         left, right = 0, n-1
         while left < right:
    #             int()为向下取整,//为向上取整
             mid = int(left + (right - left)/2)
             if a[mid] == mid:
                 left = mid + 1
             if a[mid] > mid:
                 right = mid
         return left

    方法3:求和

  4. 用len()函数获取长度n
  5. 用range()函数产生一个0:n+1的列表b
  6. 对列表b和列表a分别求和
  7. 列表b的和 减去 列表a 的和 即为缺失值
    class Solution:
     def solve(self , a ):
         return sum(range(len(a)+1)) - sum(a)
全部评论

相关推荐

三题看不懂四题不明白二题无法AC&nbsp;T=int(input())&nbsp;for&nbsp;_&nbsp;in&nbsp;range(T):&nbsp;n=int(input())&nbsp;s=input().split()&nbsp;k,mx=1,1&nbsp;for&nbsp;i&nbsp;in&nbsp;range(len(s)-1):&nbsp;if&nbsp;len(s[i])&lt;len(s[i+1]):&nbsp;k+=1&nbsp;elif&nbsp;len(s[i])==len(s[i+1]):&nbsp;if&nbsp;s[i]&lt;=s[i+1]:&nbsp;k+=1&nbsp;...
恭喜臭臭猴子:第二题用栈就行。合法的括号直接出栈了,剩下的是不合法的,肯定都得一个一个走。出入栈的过程中得记下进栈的括号的下标。最后栈里剩下的括号如果相邻两个的下标不连续,说明它们中间有一个合法的括号序列被出栈,结果加一
投递拼多多集团-PDD等公司10个岗位 > 拼多多求职进展汇总 笔试
点赞 评论 收藏
分享
小浪_Coding:个人技能一条测试没有
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务