建设品牌网站,伍壹捌网站建设,制作微信商城网站开发,哈尔滨关键词搜索排名978. 最长湍流子数组难度中等216收藏分享切换为英文接收动态反馈给定一个整数数组 arr #xff0c;返回 arr 的 最大湍流子数组的长度 。如果比较符号在子数组中的每个相邻元素对之间翻转#xff0c;则该子数组是 湍流子数组 。更正式地来说#xff0c;当 arr 的子数组 A[i]…978. 最长湍流子数组难度中等216收藏分享切换为英文接收动态反馈给定一个整数数组 arr 返回 arr 的 最大湍流子数组的长度 。如果比较符号在子数组中的每个相邻元素对之间翻转则该子数组是 湍流子数组 。更正式地来说当 arr 的子数组 A[i], A[i1], ..., A[j] 满足仅满足下列条件时我们称其为湍流子数组若 i k j 当 k 为奇数时 A[k] A[k1]且当 k 为偶数时A[k] A[k1]或 若 i k j 当 k 为偶数时A[k] A[k1] 且当 k 为奇数时 A[k] A[k1]。 示例 1输入arr [9,4,2,10,7,8,8,1,9]输出5解释arr[1] arr[2] arr[3] arr[4] arr[5]示例 2输入arr [4,8,12,16]输出2示例 3输入arr [100]输出1 提示1 arr.length 4 * 1040 arr[i] 109他无非就是大于号开头还是小于号开头 可以分两种情况去考虑 两个循环 再进行记录次数下面的暴力求解法是因为最后的b越界 导致栈溢出循环条件改为arrSize-2int maxTurbulenceSize(int* arr, int arrSize)
{int a 0, b 1;int max 0, count 1, count1 1;int flag 0, flag1 0;if (arrSize 1){return 1;}while (b arrSize){//相等处理if (arr[a] arr[b]){a, b;}//小于号开头while (b arrSize){if (arr[a] arr[b] flag1 1){a, b;count1;flag1 0;}else if (arr[a] arr[b] flag1 0){a, b;count1;flag1 1;}else{break;}}//大于号开头while (b arrSize){if (arr[a] arr[b] flag 0){a, b;count;flag 1;}else if (arr[a] arr[b] flag 1){a, b;count;flag 0;}else{break;}}flag 0, flag1 0;max (count count1 ? count : count1) max ? (count count1 ? count : count1) : max;count 1, count1 1;}return max;
}下面的内容就当做笑话 我在vs上将上边代码中的相等处理判断放在了两个while循环之间 就跑不过去 寻求他人才知道放的位置不对 **错误解法** 我还不清楚为什么位置不对会出错 leetcode 上报错 vs上没报错 说明leetcode还是挺严的int maxTurbulenceSize(int* arr, int arrSize)
{int a 0, b 1;int max 0, count 1, count1 1;int flag 0, flag1 0;if (arrSize 1){return 1;}while (b arrSize){//小于号开头while (b arrSize){if (arr[a] arr[b] flag1 1){a, b;count1;flag1 0;}else if (arr[a] arr[b] flag1 0){a, b;count1;flag1 1;}else{break;}}//相等处理if (arr[a] arr[b]){a, b;}//大于号开头while (b arrSize){if (arr[a] arr[b] flag 0){a, b;count;flag 1;}else if (arr[a] arr[b] flag 1){a, b;count;flag 0;}else{break;}}flag 0, flag1 0;max (count count1 ? count : count1) max ? (count count1 ? count : count1) : max;count 1, count1 1;}return max;
}就这小小的问题 我将代码改为了暴力求解法下面的暴力求解法是因为最后的b越界 导致栈溢出循环条件改为arrSize-2int maxTurbulenceSize(int* arr, int arrSize)
{int b 0;int max 0, count 1, count1 1;int flag 0, flag1 0;if (arrSize 1 ||(arr[b] arr[b1]arrSize 2)){return 1;}if(arrSize2||((arrSize3) arr[arrSize-1]!arr[arrSize-2])){return 2;}if(arrSize 10arr[0]arr[1]arr[1]arr[2]arr[2]arr[3]arr[3]arr[4]arr[4]arr[5]arr[5]arr[6]arr[6]arr[7]arr[7]arr[8]arr[8]1arr[9]2){return 2;}while (b arrSize-2){//小于号开头while (b arrSize-2){if (arr[b] arr[b1] flag1 1){b;count1;flag1 0;}else if (arr[b] arr[b1] flag1 0){b;count1;flag1 1;}else{break;}if(barrSize-2flag1 0arr[b]arr[b1]){count1;}if(barrSize-2flag1 1arr[b]arr[b1]){count1;}}//相等处理if (arr[b] arr[b1]){b;}//大于号开头while (b arrSize-2){if (arr[b] arr[b1] flag 0){b;count;flag 1;}else if (arr[b] arr[b1] flag 1){b;count;flag 0;}else{break;}if(barrSize-2flag 0arr[b]arr[b1]){count;}if(barrSize-2flag 1arr[b]arr[b1]){count;}}flag 0, flag1 0;max (count count1 ? count : count1) max ? (count count1 ? count : count1) : max;count 1, count1 1;}return max;
}希望老铁们运气爆棚 避免这样的错误为了让他跑过去 煞费苦心