CodingTour
ARTS #113

Algorithm

本周选择的算法题是:Longest Consecutive Sequence

规则

Given an unsorted array of integers nums, return the length of the longest consecutive elements sequence.

You must write an algorithm that runs in O(n) time.

Example 1:

Input: nums = [100,4,200,1,3,2]
Output: 4
Explanation: The longest consecutive elements sequence is [1, 2, 3, 4]. Therefore its length is 4.

Example 2:

Input: nums = [0,3,7,2,5,8,4,6,0,1]
Output: 9

Constraints:

  • 0 <= nums.length <= 105
  • -109 <= nums[i] <= 109

Solution

class Solution:
    def longestConsecutive(self, nums: List[int]) -> int:
        ans, nums = 0, set(nums)
        for num in nums:
            if num - 1 not in nums:
                current = num + 1
                while current in nums:
                    current += 1
                ans = max(ans, current - num)
        return ans

Review

Google Objective-C Style Guide

最近一周反复看了这篇 Guide 很多次,深刻体会到其中总结的原则特别好:

  • Optimize for the reader, not the writer
  • Be consistent
  • Be consistent with Apple SDKs
  • Style rules should pull their weight

打算 Q3 按照此 Guide 结合 Clean Code 深度探索下好的代码规范。

Tip

最近开始用 Excalidraw,手绘风格的,还不错:

Share

面试官问你的缺点是什么时,应该如何回答?