快捷搜索:  汽车  科技

java找出数组第二大的数:java算法题-存在连续三个奇数的数组

java找出数组第二大的数:java算法题-存在连续三个奇数的数组输出:true输入:arr = [1 2 34 3 4 5 7 23 12]输出:false解释:不存在连续三个元素都是奇数的情况。示例 2:

java找出数组第二大的数:java算法题-存在连续三个奇数的数组(1)

在leetcode(https://leetcode-cn.com/)上看到一道有趣的算法题:

给你一个整数数组 arr,请你判断数组中是否存在连续三个元素都是奇数的情况:如果存在,请返回 true ;否则,返回 false 。

示例 1:

输入:arr = [2 6 4 1]

输出:false

解释:不存在连续三个元素都是奇数的情况。

示例 2:

输入:arr = [1 2 34 3 4 5 7 23 12]

输出:true

解释:存在连续三个元素都是奇数的情况,即 [5 7 23] 。

提示:

  • 1 <= arr.length <= 1000
  • 1 <= arr[i] <= 1000

这样的题你会怎么用java实现呢?

分享一下我的解题思路:

public boolean threeConsecutiveOdds(int[] arr) { int length=arr.length; if(length<3){ return false; } int left=0; int right =length-1; int leftNum=0; int rightNum=0; while(left<=right){ if(left==right){ if(isOddNumber(arr[left])){ if(leftNum rightNum 1>=3){ return true; } } } else{ if(isOddNumber(arr[left])){ leftNum =1; if(leftNum==3){ return true; } } else{ leftNum=0; } if(isOddNumber(arr[right])){ rightNum =1; if(rightNum==3){ return true; } } else{ rightNum=0; } if(right-left==1&&leftNum rightNum>=3){ return true; } } left ; right--; } return false; } private boolean isOddNumber(int num){ return num%2!=0; }

结果:

输入:[1 1 1]
输出:true

leetcode上对该答案的分析如下:

32 / 32 个通过测试用例

状态:通过

执行用时: 0 ms 在所有 Java 提交中击败了100.00%的用户

内存消耗: 38.1 MB 在所有 Java 提交中击败了63.17%的用户

执行消耗内存分布图表

java找出数组第二大的数:java算法题-存在连续三个奇数的数组(2)

大家有更好的解题思路吗?欢迎在评论区作答哈~

猜您喜欢: