1. 程式人生 > 其它 >區間列表的交集 和相同的二元子陣列 生成交替二進位制字串的最少運算元

區間列表的交集 和相同的二元子陣列 生成交替二進位制字串的最少運算元

986. 區間列表的交集

List<int[]> list = new ArrayList<>();
int n = firstList.length;
int m = secondList.length;
int i = 0;
int j = 0;
while(i < n && j < m) {交替遍歷兩個陣列集中的陣列
int a = firstList[i][0];
int b = firstList[i][1];
int x = secondList[j][0];
int y = secondList[j][1];
int[] tem = new int[2];
tem[0] = Math.max(a, x);
tem[1] = Math.min(b, y);
if(tem[1] >= tem[0]) {
list.add(tem);
}
if(b >= y) {有剩餘的留下,沒剩餘的遍歷到下一個陣列


j++;
}else {
i++;
}
}
return list.toArray(new int[list.size()][]);


930. 和相同的二元子陣列 & 1004. 最大連續1的個數 III & 992. K 個不同整數的子陣列

這三道題都是固定一個左邊界,從此開始向右遍歷判斷
int left = 0;
int ans = 0;
while(left < nums.length) {
int sum = 0;此左邊界
for(int i = left; i < nums.length; i++) {
sum += nums[i];遍歷到結束
if(sum == goal) {
ans++;
}
}
left++;
}
return ans;


1758. 生成交替二進位制字串的最少運算元

int ans = 0;
for(int i = 0; i < s.length(); i++) {
int c = (int)s.charAt(i);
if(c != (int)('0' + i % 2)) {
ans++;
}
}
return Math.min(ans, s.length() - ans);不同數字開頭右不同的變化步驟,但二者步驟之和為陣列長度