峰与谷00

题目链接

峰与谷

题目描述

注意点

  • nums.length <= 10000

解答思路

  • 首先想到的是将数组中的元素都存到优先队列中,然后取一半的元素插入到数组奇数位置,再将剩下一半的元素插入到数组偶数位置即可,但是时间上并不理想
  • 参照题解可以从局部谷-峰-谷到全局谷-峰-谷,保证遍历过的前部分都满足谷-峰-谷。从第一个位置开始,通过其与后一个元素的大小关系确定其是是峰还是谷,后一个元素也以相同方式确认是峰还是谷,如果相邻两个元素都是峰或谷,因为前面的所有元素已经满足谷-峰-谷,所以可以将后两个元素交换位置,重复上述过程遍历完整个数组即可

代码

java 复制代码
class Solution {
    public void wiggleSort(int[] nums) {
        if (nums.length < 3) {
            return;
        }
        boolean prev = nums[0] > nums[1] ? true : false;
        for (int i = 1; i < nums.length - 1; i++) {
            boolean curr = nums[i] > nums[i + 1] ? true : false;
            if (prev == curr) {
                swap(nums, i, i + 1);
            }
            prev = !prev;
        }
    }

    public void swap(int[] nums, int m, int n) {
        int tmp = nums[m];
        nums[m] = nums[n];
        nums[n] = tmp;
    }
}

关键点

  • 找到局部谷-峰-谷到全局谷-峰-谷的规律
相关推荐
带刺的坐椅5 分钟前
Spring AI 2.0 GA 倒计时:先别急,来看看 Java AI 框架的另一条路
java·spring·ai·llm·agent·solon
高锰酸钾_5 分钟前
计算机网络-网络层-路由算法与路由协议
计算机网络·算法·智能路由器
智者知已应修善业15 分钟前
51单片机4按键控制共阳LED霓虹灯切换1整体闪烁2流水下3流水上4间隔闪烁】2023-10-27
c++·经验分享·笔记·算法·51单片机
TE-茶叶蛋27 分钟前
Java 8 引入的Stream API-stream()
java·windows·python
Stream_Silver29 分钟前
【 libusb4java实战:跨平台USB设备通信完全指南】
java·笔记·嵌入式硬件·microsoft
XW-ABAP29 分钟前
SAP ABAP 实现类似百度谷歌搜索引擎基础算法之一的,编辑距离算法
算法
极光代码工作室30 分钟前
基于SpringBoot的宿舍管理系统
java·springboot·web开发·后端开发
Ting-yu34 分钟前
SpringCloud快速入门(8)---- OpenFeign(远程调用)
java·spring·spring cloud
两年半的个人练习生^_^37 分钟前
什么是内存泄漏?什么是内存溢出?
java·开发语言
嵌入式小能手39 分钟前
飞凌嵌入式ElfBoard-进程间的通信之信号处理sigaction
linux·算法·信号处理