剑指offer - 扑克牌顺子(Java实现)
思路:对数组进行排序,然后记录下 0 的个数,遍历后面的数组,如果数字是不连续的计算我们需要在中间补齐多少个 0,如果能够补齐则继续,不能则说明不能成为顺子。
import java.util.*; public class Solution { public boolean isContinuous(int [] numbers) { if(numbers == null || numbers.length <= 0) return false;//需要注意为[]的情况 int n = numbers.length, cnt = 0; boolean flag = true; Arrays.sort(numbers); for(int i = 0; i < n; ++ i) { if(numbers[i] == 0) ++ cnt; } int val = 0; for(int i = 0; i < n; ++ i) { if(numbers[i] == 0) continue; if(val == 0) { val ++; } else { int cnt0 = numbers[i] - numbers[i - 1] - 1; if(cnt0 >= 0 && cnt0 <= cnt) cnt -= cnt0; else { flag = false; break; } } } return flag; } }
【剑指offer】题目全解 文章被收录于专栏
本专栏主要是刷剑指offer的题解记录