• Longest Consecutive Sequence [LeetCode]


    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.

    Summary: The key idea is using hash map to record every number and their index.

     1     int longestConsecutive(vector<int> &num) {
     2         unordered_map<int, int> num_idx;
     3         for(int i = 0; i < num.size(); i ++) {
     4             num_idx[num[i]] = i;
     5         }
     6         
     7         vector<bool> visited;
     8         for(int i = 0; i < num.size(); i ++) {
     9             visited.push_back(false);
    10         }
    11         
    12         int longest_len = 0;
    13         for(int i = 0; i < num.size(); i ++) {
    14             if(visited[i] == true)
    15                 continue;
    16                 
    17             int tmp_len = 1;
    18             visited[i] = true;
    19             //increase
    20             int value = num[i] + 1;
    21             while(num_idx.find(value) != num_idx.end()){
    22                 int index = num_idx[value];
    23                 value ++;
    24                 visited[index] = true;
    25                 tmp_len ++;
    26             }
    27             //decrease
    28             value = num[i] - 1;
    29             while(num_idx.find(value) != num_idx.end()){
    30                 int index = num_idx[value];
    31                 value --;
    32                 visited[index] = true;
    33                 tmp_len ++;
    34             }
    35             
    36             if(tmp_len > longest_len){
    37                 longest_len = tmp_len;
    38                 if(longest_len > num.size() / 2)
    39                     break;
    40             }
    41         }
    42         
    43         return longest_len;
    44     }
  • 相关阅读:
    vue 基础补充
    正则
    vue 指令
    函数式编程FP 初探
    .? ?? es2020
    vue alfont scss
    网络安全靶场通关指南
    Java 程序设计——站内短信系统
    Java 程序设计——登录系统
    动态规划法解找零钱问题
  • 原文地址:https://www.cnblogs.com/guyufei/p/3414035.html
Copyright © 2020-2023  润新知