算法第十四周作业01
2017-04-21 12:27
218 查看
Description
Given an unsorted array of integers, find the length of the longest consecutive elements sequence.For example,
Given [100, 4, 200, 1, 3, 2],
The longest consecutive elements sequence is [1, 2, 3, 4]. Return its length: 4.
Your algorithm should run in O(n) complexity.
Solution
首先对输入数组排序count表示局部有续子串长度,result表示最大有序子串长度(即返回的结果)
逐个迭代,当nums[i] == nums[i-1] + 1时,count++;当nums[i] == nums[i-1]时,跳过,不处理;否则,nums[i]和nums[i-1]不连续且不相等,则局部有序终止了,重置count。
Code
import java.util.Arrays; public class Solution { public int longestConsecutive(int[] nums) { // 初始化 int result = nums.length == 0 ? 0 : 1; int count = 1; // 排序 Arrays.sort(nums); // 逐个迭代判断 for (int i = 0; i < nums.length - 1; i++) { if (nums[i + 1] == nums[i]+1) { // 计数器加1 count++; if (result < count) result = count; } else if(nums[i+1] != nums[i]) { // 重置计数器 count = 1; } } return result; } }
相关文章推荐
- 算法课第十四周作业 | Search for a Range
- 算法第五周作业01
- 算法第十五周作业01
- 算法第九周作业01
- 算法设计期末作业01-8.3
- 算法第十二周作业01
- 算法第十八周作业01
- 算法作业_23(2017.5.23第十四周)
- 算法第七周作业01
- 算法设计与结构基础作业第十四周
- 算法分析与设计课程作业第十四周#1#2#3
- 算法第十六周作业01
- 第二周作业01 -- 素数的算法实现
- 算法第十七周作业01
- 算法第八周作业01
- 算法第十三周作业01
- 计算机算法设计与分析作业01:分治法求解大数乘法+L型骨牌的棋盘覆盖问题
- 算法期末作业01
- 【中国大学mooc—浙江大学数据结构2018春】1.3节求最大子列和问题,算法3的实现(对应作业题目:01-复杂度1 最大子列和问题)
- 算法作业 NP-complete problems 8.22