一手房哪个网站做信息效果好,微信小程序打不开,网站是怎么做优化,u盘做网站定义一个快慢指针#xff0c;用于截取数组中某一段信息。同时可以改变快慢指针的值来获取结果#xff0c;这个过程比较像滑动。
1493. 删掉一个元素以后全为 1 的最长子数组
定义快慢指针快指针先走#xff0c;如果到了第二个0上的时候。前面1的个数就是fast - slow - 1用于截取数组中某一段信息。同时可以改变快慢指针的值来获取结果这个过程比较像滑动。
1493. 删掉一个元素以后全为 1 的最长子数组
定义快慢指针快指针先走如果到了第二个0上的时候。前面1的个数就是fast - slow - 1但是为了后面的继续计算需要将slow指针1即可。
// 滑动窗口
int longestSubarray(int* nums, int numsSize) {// 定义快慢指针int slow 0;int fast -1;// 记录0的个数int zero 0;// 最大长度int maxlen 1;// 快指针走while(fast numsSize - 1) {fast;zero !nums[fast];while(zero 1) {zero - !nums[slow];slow;}if(fast - slow 1 maxlen) {maxlen fast - slow 1;}}return maxlen - 1;
}1004. 最大连续1的个数 III
和上一题一样的只不过将替换0的值增加为了k个。
int longestOnes(int* nums, int numsSize, int k) {// 定义快慢指针int slow 0;int fast -1;int zero 0; //记录0的个数int maxlen 0; //最终的返回的最大长度// 快指针先走while(fast numsSize - 1) {fast ;zero !nums[fast];while( zero k) {zero - !nums[slow];slow;}if(maxlen fast - slow 1) {maxlen fast - slow 1;}}return maxlen;
}2730. 找到最长的半重复子字符串
int longestSemiRepetitiveSubstring(char * s){int slow 0;int fast -1;int same 0;int maxlen 0;int len strlen(s);// 快指针while(fast len - 1) {fast;// 如果快大于慢的话就可以看相邻的相等否了?if(fast - slow 0) {// 如果相等则同样记录1if(s[fast] s[fast - 1]) {same;}// 当大于1的时候就需要移动慢指针了while( same 1 ) {if(s[slow] s[slow 1]) {--same;}slow ;}}if(fast - slow 1 maxlen) {maxlen fast - slow 1;}}return maxlen;
}