Java解决峰与谷问题

Java解决峰与谷问题

01 题目

  • 在一个整数数组中,"峰"是大于或等于相邻整数的元素,相应地,"谷"是小于或等于相邻整数的元素。例如,在数组{5, 8, 4, 2, 3, 4, 6}中,{8, 6}是峰, {5, 2}是谷。现在给定一个整数数组,将该数组按峰与谷的交替顺序排序。

    示例:

    复制代码
    输入: [5, 3, 1, 2, 3]
    输出: [5, 1, 3, 2, 3]

    提示:

    • nums.length <= 10000

02 知识点

  • 排序
  • 双指针
  • 奇偶数判断

03 我的题解

java 复制代码
public class paixu02 {
	public static void main(String[] args) {
//		测试数据
		int[] nums= {3,5,2,1,1};
		wiggleSort(nums);
		
		
	}
	public static void wiggleSort(int[] nums) {
		if (nums.length<3) {
			return;
		}
		int[] counts=Arrays.copyOf(nums, nums.length);
		Arrays.sort(counts);
//		从左极循环到右极,双指针交替插入数据
		int l=0;
		int r=nums.length-1;
		int index=0;
		while (l<r) {
			nums[index++]=counts[r--];
			nums[index++]=counts[l++];
		}
//		当数据为单数时,为中间值赋值
		if (nums.length%2==1) {
			nums[index]=counts[l];
		}
		

		
//		测试数据
		for (int i = 0; i < nums.length; i++) {
			System.out.print(nums[i]+" ");
		}
    }
}

相关推荐
茶本无香20 分钟前
Arthas 实战:线上“看 Map”的四种武器
java·map·arthas·线上定位
霸道流氓气质1 小时前
Spring AI异常处理与重试机制
java·人工智能·spring
郑州光合科技余经理3 小时前
本地生活服务系统:成品模块和定制接口怎么划界
java·前端·人工智能·后端·系统架构·php·ai编程
萧瑟余晖3 小时前
Java深入解析篇三十三之密封类与接口(Sealed Classes)详解
java·开发语言
论迹复利7 小时前
FreeRTOS 在 RISC-V 上是如何“点火“的 —— 从 main() 到第一个任务的完整链路
java·开发语言·risc-v
张宇Joaquin7 小时前
鲲鹏统一并行加速库KUPL--众核并行能力介绍
java·开发语言·网络
shehuiyuelaiyuehao7 小时前
算法31,前缀和,可被k整除的子数组
数据结构·python·算法
宸津-代码粉碎机8 小时前
AI攻防战升级!基于Spring AI构建Java应用自动免疫安全体系
java·大数据·开发语言·人工智能·python·安全·spring
2601_963749109 小时前
越华环保集团数字化污水治理:端边云采集架构与平台对接实现
java·大数据·架构
203号居民9 小时前
LeetCode hot 100 — 141. 环形链表2
算法·leetcode·链表