diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 119. \346\234\200\351\225\277\350\277\236\347\273\255\345\272\217\345\210\227/README.md" "b/lcof2/\345\211\221\346\214\207 Offer II 119. \346\234\200\351\225\277\350\277\236\347\273\255\345\272\217\345\210\227/README.md" index c38278c1a11ec..a7fc7b66ce480 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 119. \346\234\200\351\225\277\350\277\236\347\273\255\345\272\217\345\210\227/README.md" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 119. \346\234\200\351\225\277\350\277\236\347\273\255\345\272\217\345\210\227/README.md" @@ -360,6 +360,33 @@ var longestConsecutive = function (nums) { }; ``` +#### Swift + +```swift +class Solution { + func longestConsecutive(_ nums: [Int]) -> Int { + let numSet: Set = Set(nums) + var longestStreak = 0 + + for num in nums { + if !numSet.contains(num - 1) { + var currentNum = num + var currentStreak = 1 + + while numSet.contains(currentNum + 1) { + currentNum += 1 + currentStreak += 1 + } + + longestStreak = max(longestStreak, currentStreak) + } + } + + return longestStreak + } +} +``` + diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 119. \346\234\200\351\225\277\350\277\236\347\273\255\345\272\217\345\210\227/Solution2.swift" "b/lcof2/\345\211\221\346\214\207 Offer II 119. \346\234\200\351\225\277\350\277\236\347\273\255\345\272\217\345\210\227/Solution2.swift" new file mode 100644 index 0000000000000..948b3c0030aa9 --- /dev/null +++ "b/lcof2/\345\211\221\346\214\207 Offer II 119. \346\234\200\351\225\277\350\277\236\347\273\255\345\272\217\345\210\227/Solution2.swift" @@ -0,0 +1,22 @@ +class Solution { + func longestConsecutive(_ nums: [Int]) -> Int { + let numSet: Set = Set(nums) + var longestStreak = 0 + + for num in nums { + if !numSet.contains(num - 1) { + var currentNum = num + var currentStreak = 1 + + while numSet.contains(currentNum + 1) { + currentNum += 1 + currentStreak += 1 + } + + longestStreak = max(longestStreak, currentStreak) + } + } + + return longestStreak + } +} \ No newline at end of file