开篇寄语
最近在Edabit上面做题,发现不少有意思的题目,对于提高编程能力和逻辑分析能力会有很大裨益,该网站此前在之前的文章,如何快速学会一门编程语言中有过介绍,具体可以参看下方的前情提要。而本篇文章介绍一下我是用java如何解决这个Mini Peaks问题的。
前情提要
内容详情
问题大概是这样的:
编写一个函数,返回数组中严格大于其相邻左右邻居的所有元素。
给的例子:
miniPeaks([4, 5, 2, 1, 4, 9, 7, 2]) ➞ [5, 9] // 5 has neighbours 4 and 2, both are less than 5. miniPeaks([1, 2, 1, 1, 3, 2, 5, 4, 4]) ➞ [2, 3, 5] miniPeaks([1, 2, 3, 4, 5, 6]) ➞ []
解决思路,伯衡君看到题目说是要大于左右两边的数,自然不可能是开头和结尾的数,同时既然是要返回所有,那么就会用到循环遍历,引入import java.util.Arrays必不可少,然后将符合要求的结果都放在一个集合里就可以了,根据其条件,得出答案如下:
public class Program { public static int[] miniPeaks(int arr[]) { String tmp = ""; for(int i = 1; i<arr.length - 1; i++){ if(arr[i] > arr[i-1] && arr[i] > arr[i+1]){ tmp += arr[i]; } } if(tmp.length() == 0){ return new int[0]; }else{ String[] lst = tmp.split(""); return java.util.Arrays.stream(lst).mapToInt(x->Integer.parseInt(x)).toArray(); } } }ArrayArrayArray
- 我的微信
- 微信扫一扫加好友
- 我的微信公众号
- 扫描关注公众号