博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
判断时间或者数字是否连续
阅读量:4293 次
发布时间:2019-05-27

本文共 2915 字,大约阅读时间需要 9 分钟。

一、判断时间数组是否连续(格式:yyyyMMdd)public static String convert(String[] ints, int index) {    int end = index;    if (ints.length == index) {//结束条件,遍历完数组        return "";    } else {        for (int i = index; i < ints.length; i++) {            if (i < ints.length - 1) {                Date date1 = DateUtils.addDate(DateUtils.format(String.valueOf(ints[i]),"yyyyMMdd"),1);                Date date2 = DateUtils.format(String.valueOf(ints[i + 1]),"yyyyMMdd");                if (date1.getTime()==date2.getTime()){                    end = i;                }                else {                    if (i > index)                        end = end + 1;                    break;                }            } else {                if (end == ints.length - 2) {                    end = ints.length - 1;                    break;                }            }        }        if (index == end)//相等说明不连续            return ints[index] + "," + convert(ints, end + 1);        else//连续            return ints[index] + "-" + ints[end] + "," + convert(ints, end + 1);    }}二、判断数字数组是否连续 public static String convert(Integer[] ints, int index) {        int end = index;        if (ints.length == index) {//结束条件,遍历完数组            return "";        } else {            for (int i = index; i < ints.length; i++) {                if (i < ints.length - 1) {                    if (ints[i] + 1 == ints[i + 1]) {                        end = i;                    } else {                        if (i > index)                            end = end + 1;                        break;                    }                } else {                    if (end == ints.length - 2) {                        end = ints.length - 1;                        break;                    }                }            }            if (index == end)//相等说明不连续                return ints[index] + "," + convert(ints, end + 1);            else//连续                return ints[index] + "-" + ints[end] + "," + convert(ints, end + 1);        }    }

 

现有一个整数数组元素是0~65535之间的任意数字,已知相同数字不会重复出现,而0可以重复出现,且0可以通配任意一个数字,设计一个算法判断该数组是否连续。注意:

1)数组中的数据可以乱序
2)0可以出现多次

题目分析:

如果一个包含n个数据的数组是连续的,那么最大值和最小值之差一定为n-1;如果包含0的话,那么最大值和最小值之差不能超过n-1。

 

package dataStructure;public class MyContinusArray {	static boolean isContinusArray(int a[]) {		int min = a[0];		int max = a[0];		for(int i = 1; i < a.length; i++) {			if(a[i] < min && a[i] !=0 ) {				min = a[i];			}			if(a[i] > max && a[i] != 0) {				max = a[i];			}		}				if((max - min) <= a.length-1 ) {			return true;		}		return false; 			}		public static void main(String[] args) {		int array_1[] = {0,2,3,0,0};		int array_2[] = {3,2,5,4,0};		int array_3[] = {10,56,0,6,1};		System.out.println("array_1是否为连续数组:"+isContinusArray(array_1));		System.out.println("array_2是否为连续数组:"+isContinusArray(array_2));		System.out.println("array_3是否为连续数组:"+isContinusArray(array_3));	}}

原文链接:https://blog.csdn.net/qq_41900081/article/details/86531863

你可能感兴趣的文章
量化策略回测DualThrust
查看>>
量化策略回测BoolC
查看>>
量化策略回测DCCV2
查看>>
mongodb查询优化
查看>>
五步git操作搞定Github中fork的项目与原作者同步
查看>>
git 删除远程分支
查看>>
删远端分支报错remote refs do not exist或git: refusing to delete the current branch解决方法
查看>>
python multiprocessing遇到Can’t pickle instancemethod问题
查看>>
APP真机测试及发布
查看>>
iOS学习之 plist文件的读写
查看>>
通知机制 (Notifications)
查看>>
10 Things You Need To Know About Cocoa Auto Layout
查看>>
C指针声明解读之左右法则
查看>>
一个异步网络请求的坑:关于NSURLConnection和NSRunLoopCommonModes
查看>>
iOS 如何放大按钮点击热区
查看>>
ios设备唯一标识获取策略
查看>>
获取推送通知的DeviceToken
查看>>
Could not find a storyboard named 'Main' in bundle NSBundle
查看>>
CocoaPods安装和使用教程
查看>>
Beginning Auto Layout Tutorial
查看>>