首页 新闻 搜索 专区 学院

给定一些时间,如何判断是否存在连续三天,求算法

0
[待解决问题]

给定一些时间,如何判断是否存在连续三天,求算法

拖鞋王子的主页 拖鞋王子 | 初学一级 | 园豆:37
提问于:2014-05-27 16:50
< >
分享
所有回答(5)
0

先排序后遍历

吴瑞祥 | 园豆:29369 (高人七级) | 2014-05-27 17:01
0

麻烦将问题描述详细一点哈

Arnold0Kang | 园豆:202 (菜鸟二级) | 2014-05-27 17:05
0

1234怎么算?算一次1234 还是 算两次123和234两种情况?

angelshelter | 园豆:9687 (大侠五级) | 2014-05-27 17:36
0

java实现如下:

import java.util.*;

public class Tmp {

    public static void main(String[] args) {
    TimeProcess t = new TimeProcess();

    // 进行赋值年-月-日, 要注意的是, 月份的范围为: 0-11, 表示1到12月
    t.add(2009, 10, 4);
    t.add(2009, 10, 2);
    t.add(2009, 10, 3);
    t.add(2009, 11, 4);
    
    t.hasContinueThreeDays();
    }
}

class TimeProcess {
    private ArrayList<GregorianCalendar> dateList;

    public TimeProcess() {
    dateList = new ArrayList<GregorianCalendar>();
    }
    
    public void add(int year, int month, int day) {
    dateList.add(new GregorianCalendar(year, month-1, day));
    }

    public boolean hasContinueThreeDays() {
    // 先进行排序
    Collections.sort(dateList);
    
    // 至少需要三天
    if (dateList.size() < 3) return false;

    long divid = 1000*24*3600;
    
    // 遍历判断
    for (int i = 0; i < dateList.size() - 2; i++) {
        long first = dateList.get(i).getTimeInMillis()/divid;
        long second = dateList.get(i+1).getTimeInMillis()/divid;
        long third = dateList.get(i+2).getTimeInMillis()/divid;
        
        if (second - first == 1 && third - second == 1) {
        System.out.println("连续的三天为: ");
        System.out.println("\t" + dateList.get(i).getTime());
        System.out.println("\t" + dateList.get(i+1).getTime());
        System.out.println("\t" + dateList.get(i+2).getTime());
        return true;
        }
    }
    
    System.out.println("没有连续的三天");
    return false;
    }
}

---------------------------------

希望对你有帮助。

欢迎关注:http://www.cnblogs.com/grass-and-moon/

grassofsky | 园豆:342 (菜鸟二级) | 2014-05-28 15:29
0

用hash表维护,遍历一遍,对于每个时间判断相邻的另外两天在不在hash中(三种情况),如果在就是Yes,否则就是No

努力变瘦 | 园豆:243 (菜鸟二级) | 2014-12-22 19:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册