Java如何处理Mini Peaks问题即在集合中筛选出数值比前后都要大的数

百度已收录   阅读次数: 58
2021-10-2812:49:18 发表评论
摘要

最近在Edabit上面做题,发现不少有意思的题目,对于提高编程能力和逻辑分析能力会有很大裨益,该网站此前在之前的文章,如何快速学会一门编程语言中有过介绍,具体可以参看下方的前情提要。而本篇文章介绍一下我是用java如何解决这个Mini Peaks问题的……

Java如何处理Mini Peaks问题即在集合中筛选出数值比前后都要大的数

开篇寄语

最近在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();
		}
  }
}

分享至:
  • 我的微信
  • 微信扫一扫加好友
  • weinxin
  • 我的微信公众号
  • 扫描关注公众号
  • weinxin
  • A+
所属分类:Java

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: