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]+" ");
		}
    }
}

相关推荐
Kiyra13 小时前
为什么远程调用别包进 Spring 事务里
java·后端·spring
人道领域13 小时前
【LeetCode刷题日记】225.用队列实现栈--三招实现栈操作(多种思维)
java·开发语言·算法·leetcode·面试
Mr_pyx13 小时前
【告别for循环】Java Stream 流式编程精通:从入门到源码级的性能优化
java·开发语言·性能优化
:12113 小时前
java基础--数组
java·开发语言
Agent产品评测局14 小时前
智能体在药物发现阶段如何辅助完成靶点专利覆盖的自动识别?2026药研AI Agent全景盘点与自动化选型指南
java·人工智能·ai·chatgpt·自动化
新新学长搞科研14 小时前
【高届数机械工程会议】第十二届机械工程、材料和自动化技术国际学术会议(MMEAT 2026)
运维·人工智能·算法·机器学习·自动化·软件工程·激光
狐璃同学14 小时前
数据结构(2)线性表
数据结构·算法
啦啦啦_999914 小时前
4. KNN算法之 特征预处理(归一化&标准化)
算法
Agent手记14 小时前
终端消费数据自动采集与分析智能体的搭建思路:2026全链路技术架构与实战解析
java·开发语言·人工智能·ai·架构
这是程序猿14 小时前
mysql的安装教程
java·人工智能·windows·mysql