题解 | #扑克牌顺子#

扑克牌顺子

http://www.nowcoder.com/practice/762836f4d43d43ca9deb273b3de8e1f4

利用0的个数来解决这个问题:

在对数组进行排序后,在数字不连续时:当相差的值大于等于2时,需要消耗多个0来填充中间的空缺,所以扣掉相应的0,循环继续。若需要的0比拥有的多,则返回失败。

import java.util.*;
public class Solution {
    public boolean IsContinuous(int [] numbers) {
        ArrayList<Integer> num = new ArrayList<>();
        for(int i=0;i<numbers.length;i++){
            num.add(numbers[i]);
        }
        Collections.sort(num);
        int zero = 0;
        while(num.contains(0)){
            num.remove(0);
            zero++;
        }
       for(int i=0;i<num.size()-1;i++){
           if(num.get(i)+1!=num.get(i+1)){
               if(num.get(i+1)-num.get(i)>=2){
                   if(num.get(i+1)-num.get(i)-1<=zero){
                       zero = zero - num.get(i+1) + num.get(i)+1;
                   }else{
                       return false;
                   }
                }else{
                   return false;
               }
                    if(zero<0) return false;
                }
            }
        return true;
    }
}
全部评论

相关推荐

斑驳不同:还为啥暴躁 假的不骂你骂谁啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务