精华内容
下载资源
问答
  • 输出有序数组连续序列范围

    千次阅读 2015-08-21 22:43:26
    Given a sorted integer array without duplicates, return the summary of its ranges. For example, given [0,1,2,4,5,7], return ...说明:0,1,2是连续序列,则输出0->2 4,5又是另外一组连续的,则输出4->5 7单

    Given a sorted integer array without duplicates, return the summary of its ranges.

    For example, given [0,1,2,4,5,7], return ["0->2","4->5","7"].


    说明:0,1,2是连续的序列,则输出0->2

    4,5又是另外一组连续的,则输出4->5

    7单独是一个序列,输出7


    注意数组没有元素(不一定为空),只有1一个元素,等等的特殊情况的处理。

    public static void summaryRanges(){//leetcode oj
    		int []nums = {1,2,3,4,6,8};
    		List<String> a = new ArrayList<String>();
    		int start=0;
    		int end = 0;
    		int temp=0;
    		int i=0;
    
    		while(i<nums.length){
    			temp=nums[i];
    			if(i+1 != nums.length && temp+1 != nums[i+1]){//特殊情况处理,超出数组长度
    				if(start == end){
    					a.add(""+nums[start]);
    				}else{
    					a.add(nums[start]+"->"+nums[end]);
    				}
    				start=i+1;
    				end= start;
    				temp = nums[start];
    				++i;
    				if(start == nums.length -1){//最后一个元素是起始元素直接添加
    					a.add(""+nums[start]);
    					break;
    				}
    			}else{
    				if(i+1 == nums.length ){//后面没有元素了,
    					if(start == end){
    						a.add(""+nums[start]);
    					}else{
    						a.add(nums[start]+"->"+nums[end]);
    					}
    					break;
    				}
    				++i;
    				temp = nums[i];
    				end = i;
    			}
    		}//while
    		//return a;
    		for(String d:a){
    			System.out.println(d);
    		}
    		
    	}


    展开全文
  • 类似于range函数,numpy库提空了np.arange()方法可以生成连续序列(比如1,2,3,4…),这样可以对ndarray数组进行初始化赋值。 演示程序示例如下: import numpy as np data = np.arange(10) print(data) 运行结果...

    类似于range函数,numpy库提空了np.arange()方法可以生成连续序列(比如1,2,3,4…),这样可以对ndarray数组进行初始化赋值。
    演示程序示例如下:

    import numpy as np
    data = np.arange(10)
    print(data)
    

    运行结果如下所示:

    [0 1 2 3 4 5 6 7 8 9]
    [Finished in 2.2s]
    
    展开全文
  • 数组中最长连续序列

    千次阅读 2019-08-03 09:59:47
     给定无序数组,返回其中最长的连续序列的长度。 【举例】  arr = [100, 4, 200, 1, 3, 2],最长的连续序列为[1, 2, 3, 4],所以返回4。 【基本思路】  利用哈希表可以实现时间、空间复杂度都为O(N)的方法。...

    【题目】

      给定无序数组,返回其中最长的连续序列的长度。

    【举例】

      arr = [100, 4, 200, 1, 3, 2],最长的连续序列为[1, 2, 3, 4],所以返回4。

    【基本思路】

      利用哈希表可以实现时间、空间复杂度都为O(N)的方法。具体过程如下:

    生成哈希表map,key表示遍历过的某个数,value代表key这个数所在的最长连续序列的长度。

    从左到右依次遍历数组,假设遍历到arr[i],如果arr[i]已经存在于map中,直接跳过,这是因为最长的连续序列必定不包含相同的值。如果arr[i]不存在与map中,则将arr[i]作为key添加到map中,其value值设为1,表示目前arr[i]单独作为一个连续序列。

    之后,在map表中查找是否含有arr[i]-1,如果有,说明arr[i]-1和arr[i]可以合并,合并之后记录新序列的长度len、最大值lmax和最小值lmin,将map表中key为lmax,lmin的value值更新为len;

    同理在map表中查找是否含有arr[i]+1,如果有,说明arr[i]和arr[i] + 1可以合并,合并之后记录新序列的长度len、最大值rmax和最小值rmin,将map表中key为rmax,rmin的value值更新为len。

    遍历过程中用全局变量max记录每次合并出的序列的长度的最大值,最后返回max
     

    def longestConsecutive(arr):
    
        if arr == None or len(arr) ==0:
            return 0
    
        map_ = {}
        maxstr = 1
    
        for i in range(len(arr)):
            if arr[i] not in map_:
                map_[arr[i]] = 1
                if arr[i] - 1 in map_:
                    maxstr = max(maxstr,merge(map_,arr[i]-1,arr[i]))
    
                if arr[i] + 1 in map_:
                    maxstr = max(maxstr,merge(map_,arr[i],arr[i]+1))
    
    
        return maxstr
    
    def merge(map_,less,more):
    
        left = less - map_[less] + 1
        right = more + map_[more] - 1 
        length = right - left + 1
        
        map_[left] = length
        map_[right] = length
    
        return length
      

     

    展开全文
  • 数组中最长序列的长度,例如,给定数组[31,6,32,1,3,2],最长的连续元素序列是[1,2,3],返回的长度是3. 思路:判断array[i]-1,array[i]+1是否存在于数组中。如何保持之前的处理结果?可以使用hash table。由于...

    求数组中最长序列的长度,例如,给定数组[31,6,32,1,3,2],最长的连续元素序列是[1,2,3],返回的长度是3.

    思路:判断array[i]-1,array[i]+1是否存在于数组中。如何保持之前的处理结果?可以使用hash table。由于序列是一系列连续整数,所以只要序列的最小值以及最大值,就能唯一确定序列。而所谓的“作为后继加入序列”,“作为前驱加入序列”,就是更新最大值和最小值。hash table的value可以是一个记录最大/最小值得structure,用以描述当前节点参与构成的最长序列。

    struct Bound
    {
        int high;
        int low;
        Bound(int h,int l)
        {
            high = h;
            low = l;
        }
    };
    
    int getMaxLength(vector<int>& num)
    {
        unordered_map<int,Bound> table;
        int local;
    
        int maxLen = 0;
    
    for(int i=0;i<num.size();i++)
    {
        if(table.count(num[i]))
        {
            continue;
        }
        local = num[i];
        int low = local,high = local;
        
        if(table.count(local-1))
        {
            low = table[local-1].low;
        }
        if(table.count(local+1))
        {
            high = table[local+1].high;
        }
        //此时的high已更新成现有的最大的了
        table[low].high = table[local].high = high;
        table[high].low = table[local].low = low;
    
        if(high - low + 1 > maxLen)
        {
            maxLen = high - low + 1;
        }
    }
    
        
        return maxLen;
        
    }

     

    展开全文
  • 题目描述:longest-...一个未排序的数组,找出其中最长的连续序列,要求时间复杂度O(N). For example, Given[100, 4, 200, 1, 3, 2], The longest consecutive elements sequence is[1, 2, 3, 4]. Return its lengt
  • 数组中的最长连续序列

    千次阅读 2017-12-23 10:56:23
    //数组中的最长连续序列 public class LongestSequence{ //最长的连续序列 public static int longestConsecutive(int[]arr) { if(arr==null||arr.length==0) { return 0; } int m
  • 子序列的定义:子序列就是在原来序列中找出一部分组成的序列(子序列不一定连续) 在数学中,某个序列的子序列是从最初序列通过去除某些元素但不破坏余下元素的相对位置(在前或在后)而形成的新序列。 例如:数组...
  • Java实现 LeetCode 659 分割数组连续序列 (哈希)

    万次阅读 多人点赞 2020-04-03 10:05:19
    659. 分割数组连续序列 输入一个按升序排序的整数数组(可能包含重复数字),你需要将它们分割成几个子序列,其中每个子序列至少包含三个连续整数。返回你是否能做出这样的分割? 示例 1: 输入: [1,2,3,3,4,5] ...
  • 在这里插入代码片class Solution { public: int maxSubArray(vector<int>& nums) { int i,j,k=nums[0],sum=nums[0]; if(nums.size()==0) return nums[0]; for(i=1;i<...
  • 编程之美上的一个题:给出一个整数序列S,其中有N个数,定义其中一个非空连续序列T所有数的和为T的“序列和”。对于S的所有非空连续序列T,求最大的序列和。 思路 * 数组第一个元素A[0]和最大子数组和...
  • 一个子序列是从原始数组挑选一部分(也可以全部)元素而不改变相对位置形成的新数组如果可以完成上述分割,则返回 true ;否则,返回 false 。 示例 1: 输入: [1,2,3,3,4,5] 输出: True 解释: 你可以分割出这样两个...
  • 给定无序数组arr,返回其中最长的连续序列的长度(要求值连续,位置可以不连续,例如 3,4,5,6为连续的自然数) 输入描述: 输出两行,第一行包括一个整数n( 1 \leq n \leq10^5 )(1≤n≤105),第二行包含n个整数,...
  • 数组中最长连续递增子序列

    千次阅读 2017-08-31 15:35:05
    数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2, ...
  • 数组连续序列的最大和

    千次阅读 2018-05-04 09:30:53
    这里非连续子序列的定义是,子序列中任意相邻的两个数在原序列里都不相邻。例如,对于L=[2,-3,3,50], 输出52(分析:很明显,该列表最大非连续子序列为[2,50])。测试例子:L=[-2,-3,3,50,1,-1,100] 。用动态规划的...
  • 从方法一可以看到,对于数组中的元素 x,如果存在一个子序列以 x-1 结尾,则可以将 x 加入该子序列中。将 x 加入已有的子序列总是比新建一个只包含 x 的子序列更优,因为前者可以将一个已有的子序列的长度增加 1,而...
  • 主要介绍了JavaScript实现找出数组中最长的连续数字序列的方法,需要的朋友可以参考下
  • 分割数组连续序列 题目 给你一个按升序排序的整数数组 num(可能包含重复数字),请你将它们分割成一个或多个子序列,其中每个子序列都由连续整数组成且长度至少为 3 。 如果可以完成上述分割,则返回 true ;...
  • 算法-数组的最长连续序列长度1、数组的最长连续序列长度 1、数组的最长连续序列长度 题目是Hard级别的,因为我们要把时间复杂度降低到n 128. 最长连续序列 给定一个未排序的整数数组,找出最长连续序列的长度。 要求...
  • var array=[1, -2, 3, 10, -4, 7, 2, -5]; //结果为3, 10, -4, 7, 2 alert(findSubArray(array).join(",")); function findSubArray(array){ ... result[0]="数组为空!";  return resu
  • 给你一个按升序排序的整数数组 num(可能包含重复数字),请你将它们分割成一个或多个子序列,其中每个子序列都由连续整数组成且长度至少为 3 。 如果可以完成上述分割,则返回 true ;否则,返回 false 。 示例...
  • 给定一个数组,其中元素可正可负,求其中最大连续序列的和。 代码 public class FindGreatestSum { public static void main(String[] args) { int[] array = {6,-3,-2,7,-15,1,2,2}; System.out.println...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 121,902
精华内容 48,760
关键字:

数组中的连续序列