首页 > 其他分享 >区间列表的交集 和相同的二元子数组 生成交替二进制字符串的最少操作数

区间列表的交集 和相同的二元子数组 生成交替二进制字符串的最少操作数

时间:2022-11-29 21:25:05浏览次数:40  
标签:操作数 tem 交集 ++ 二进制 int 数组 ans length

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);不同数字开头右不同的变化步骤,但二者步骤之和为数组长度

标签:操作数,tem,交集,++,二进制,int,数组,ans,length
From: https://www.cnblogs.com/xtag/p/16936746.html

相关文章