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,手绘风格的,还不错: