Java找到解决检查的最佳方法连续数[算法]

时间:2015-08-11 21:19:13

标签: java algorithm arraylist data-structures

我试图找到解决一个问题的优雅方法。

Issue : Check few numbers continuity.

Value : Start number, End Number (Each Number Group)

例如有一组。

First Group : Start 1, End 90
Second Group : Start 91, End 180
Third Group : Start 181, End 225
Forth Group : Start 226, End 310
Fifth Group : Start 311, End 360

正如您可以查看上面的列表,组正在连接

First Group End : 90 , Second Group Start 91.
Second Group End : 180, Third Group Start 181.

所以所有组号都连在一起。

Then results is correct, Status show correct

But if there is disconnecting point, status should be not correct.

不正确的例子。

First Group : Start 1, End 90
Second Group : Start 94, End 180
Third Group : Start 181, End 225  

First Group End 90, Second Group Start 94. So it's not continuous numbers.

我可以将ArrayLists逐个检查, 但我想知道任何人都有优雅的解决方案来制作动态逻辑吗?

我的解决方案可能是。

ArrayList<Integer> ArrStartRawData = new ArrayList<Integer>();
ArrayList<Integer> ArrEndRawData = new ArrayList<Integer>();

ArrStartRawData.add(Group[0].start);
ArrEndRawData.add(Group[0].end);
ArrStartRawData.add(Group[1].start);
ArrEndRawData.add(Group[1].end);
ArrStartRawData.add(Group[2].start);
ArrEndRawData.add(Group[2].end);

String status = "";
for(int z=0; z < ArrEndRawData.size() ; z++){
    Integer num = ArrEndRawData.get(z);
    if(z != ArrEndRawData.size()-1) {
        if((ArrStartRawData.get(z+1)-ArrEndRawData.get(z)) == 1) {
            status = "Correct";
        } else {
            status = "Not Correct";
            break;
        }
    }
}

任何人都有更好的想法制作动态代码吗?

由于

3 个答案:

答案 0 :(得分:0)

这可行。您也可以使用它们所在的初始阵列来实现相同的功能。另外,如果你从z = 1开始,你可以删除if语句,只检查false语句......

但是因为我不确定你从这里开始的是什么......就是你拥有的,但不是那么复杂。对不起,这是我理解的唯一方法。

status = "Correct";
for(int z=1; z < ArrEndRawData.size() ; z++){
    if((ArrStartRawData.get(z) - ArrEndRawData.get(z-1)) != 1) {
        status = "Not Correct";
        break;
    }
}

另外,为了充满乐趣和动态,我会添加一些东西以确保你的End和Start一样多。

答案 1 :(得分:0)

这是一个非常常见的面试问题,可以在下面找到收集的例子。

Examples

答案 2 :(得分:0)

这个也可以完成这项工作。

$('form.p_form').submit(function (){
var description = $.trim($('#f9').val());
//this blocks form submit if empty field and it works
if(description === '') return false;
//this doesnt work
if(description !== ''){
var aa = $.post("checkdescription.php",{
     description: description
 },
 function(data, status){
    if(data !== ''){
    return data;
    }
 });

 //here I need to know the response text returned from ajax so I can say like this:
 if(aa === 'error message'){
 return false;
    }
 }
});