【LeetCode每日一题】——面试题10.11.峰与谷

news2024/12/22 18:08:50

文章目录

  • 一【题目类别】
  • 二【题目难度】
  • 三【题目编号】
  • 四【题目描述】
  • 五【题目示例】
  • 六【题目提示】
  • 七【解题思路】
  • 八【时间频度】
  • 九【代码实现】
  • 十【提交结果】

一【题目类别】

  • 排序

二【题目难度】

  • 中等

三【题目编号】

  • 面试题10.11.峰与谷

四【题目描述】

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

五【题目示例】

  • 示例:
    • 输入: [5, 3, 1, 2, 3]
    • 输出: [5, 1, 3, 2, 3]

六【题目提示】

  • n u m s . l e n g t h < = 10000 nums.length <= 10000 nums.length<=10000

七【解题思路】

  • 首先对数组从小到大排序
  • 排序之后我们仔细思考题目的要求,题目要求数组按照“大-小”的顺序对数组重新组合
  • 现在对于排序后的任意一个位置i的数字来说,i-1位置的数字小于位置i的数组,位置i+1的数字大于位置i的数字,而位置i+1的数字又大于位置i-1和位置i的数字
  • 所以我们只需要将位置i的数字和位置i+1的数字进行交换,这样位置i的数字就大于位置i+1的数字了,而且位置i的数字也大于位置i-1的数字,就形成了“峰”和“谷”
  • 只需要每两个数字为一组遍历数组即可
  • 本题不需要返回值

八【时间频度】

  • 时间复杂度: O ( n l o g n ) O(nlogn) O(nlogn) n n n为传入的数组的长度
  • 空间复杂度: O ( l o g n ) O(logn) O(logn) n n n为传入的数组的长度

九【代码实现】

  1. Java语言版
class Solution {
    public void wiggleSort(int[] nums) {
        Arrays.sort(nums);
        for(int i = 0;i < nums.length - 1;i+=2){
            int temp = nums[i];
            nums[i] = nums[i + 1];
            nums[i + 1] = temp;
        }
    }
}
  1. C语言版
int compare(const void *a, const void *b)
{
    return *(int *)a - *(int *)b;
}

void wiggleSort(int* nums, int numsSize)
{
    qsort(nums, numsSize, sizeof(int), compare);
    for(int i = 0;i < numsSize - 1;i += 2)
    {
        int temp = nums[i];
        nums[i] = nums[i + 1];
        nums[i + 1] = temp;
    }
}
  1. Python语言版
class Solution:
    def wiggleSort(self, nums: List[int]) -> None:
        nums.sort()
        for i in range(0, len(nums) - 1, 2):
            temp = nums[i]
            nums[i] = nums[i + 1]
            nums[i + 1] = temp
  1. C++语言版
class Solution {
public:
    void wiggleSort(vector<int>& nums) {
        if(nums.size() == 0){
            return;
        }
        sort(nums.begin(), nums.end());
        for(int i = 0;i < nums.size() - 1;i += 2){
            int temp = nums[i];
            nums[i] = nums[i + 1];
            nums[i + 1] = temp;
        }
    }
};

十【提交结果】

  1. Java语言版
    在这里插入图片描述

  2. C语言版
    在这里插入图片描述

  3. Python语言版
    在这里插入图片描述

  4. C++语言版
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1012156.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue学习笔记总结

目录 1、Vue核心 1.1什么是vue? 1.2什么是mvvm? ​编辑 1.3插值表达式{{}} 2.Vue中的常用指令 2.1内容渲染指令 2.2条件渲染指令 2.3事件绑定指令 2.4属性绑定指令 2.5列表渲染指令 2.5.1小案例-小黑的书架 2.6v-for中的key 2.7双向绑定指令 3.指令修饰符 3.1什…

前端JavaScript修饰器:简化代码,增强功能

​ &#x1f3ac; 岸边的风&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! ​ 目录 引言 1. 修饰器简介 2. 修饰器语法 3. 类修饰器 应用场景 示例代码 4. 方法修饰器 应用场景 示例代码 5. 属性…

如何隐藏Selenium特征实现自动化网页采集

Selenium是一个流行的自动化网页测试工具&#xff0c;可以通过模拟用户在Chrome浏览器中的操作来完成网站的测试。然而&#xff0c;有些网站会检测浏览器是否由Selenium驱动&#xff0c;如果是&#xff0c;就会返回错误的结果或拒绝访问。为了避免这种情况&#xff0c;我们需要…

文件夹怎么保护?文件夹保护的方法有哪些?

文件夹是存储文件的功&#xff0c; 而保护文件夹可以有效地避免数据泄露&#xff0c;那么文件夹该怎么保护呢&#xff1f;下面我们就来了解一下吧。 文件夹保护3000 保护文件夹的方法除了加密之外&#xff0c;还有隐藏和伪装&#xff0c;而这些都可以通过文件夹保护3000来实现…

嵌入式学习笔记(33)S5PV210的第二阶段处理过程

&#xff08;1&#xff09;第一个过程&#xff0c;怎么找到具体是哪个中断&#xff1a;S5PV210中因为支持的中断源很多&#xff0c;所以直接设计了4个中断寄存器&#xff0c;每个32位&#xff0c;每位对应一个中断源。&#xff08;理论上210最多可以支持128个中断源&#xff0c…

打造生产级Llama大模型服务

对于任何想要尝试人工智能或本地LLM&#xff0c;又不想因为意外的云账单或 API 费用而感到震惊的人&#xff0c;我可以告诉你我自己的旅程是如何的&#xff0c;以及如何开始使用廉价的消费级硬件执行Llama2 推理 。 这个项目一直在以非常活跃的速度发展&#xff0c;这使得它非…

视频号挂公众号链接最新方法教程,非常给力,使用的朋友不亦乐乎

接着看看视频号挂链接发展的来龙去脉 要点一&#xff1a;早在前两年&#xff0c;视频号链接直接显示在视频上方&#xff0c;可直接点击&#xff0c;哇塞&#xff0c;做视频号的福音&#xff0c;怎么能这么给力呢&#xff0c;引流不是特别方便吗&#xff0c;好景不长&#xff0c…

目前广州股票开户交易佣金费率最低是多少?怎么申请低佣金账户?

股票开户是指投资者在证券公司或券商处申请开立证券账户&#xff0c;并获得购买和交易股票的资格。一般需要提供身份证明、个人信息、资产证明等材料&#xff0c;并签署相关协议和风险提示书。开户后&#xff0c;投资者可以通过证券账户进行股票买卖等交易活动。 目前广州股票…

Vue奶茶冷饮店在线点单系统管理系统 微信小程序

奶茶店管理系统采用了java语言&#xff0c;开发了功能完备、使用简单的前端应用程序&#xff0c;并建立、维护了一个数据完整、安全、稳定性强的后台数据库系统。 系统使用java语言和Mysql数据库作为设计工具&#xff0c;可简单易行地学习操作。用户角色之间的相结合开发一套奶…

微服务全栈:深入核心组件与开发技巧

文章目录 1.服务注册与发现1.1. 客户端注册 (ZooKeeper)1.2. 第三方注册 (独立的服务Registrar)1.3. 客户端发现1.4. 服务端发现1.5. Consul1.6. Eureka1.7. SmartStack1.8. Etcd 2. API 网关2.1. 请求转发2.2. 响应合并2.3. 协议转换2.4. 数据转换2.5. 安全认证 3. 配置中心3.…

A股风格因子看板 (2023.09 第04期)

该因子看板跟踪A股风格因子&#xff0c;该因子主要解释沪深两市的市场收益、刻画市场风格趋势的系列风格因子&#xff0c;用以分析市场风格切换、组合风格暴露等。 今日为该因子跟踪第04期&#xff0c;指数组合数据截止日2023-08-31&#xff0c;要点如下 近1年A股风格因子检验统…

点亮你的证件照!自制背景颜色修改脚本揭秘!

文章目录 &#x1f31d;前言&#x1f31a;重要的工具 - removebg&#x1f311;removebg介绍&#x1f312;拿到API KEY &#x1f31a;脚本的使用教程&#x1f4da;资源 专栏Python零基础入门篇&#x1f525;Python网络蜘蛛&#x1f525;Python数据分析Django基础入门宝典&#x…

【UnityShaderLab实现“Billboard“始终面向相机_播放序列图的效果_案例分享(内附源码)】

"Billboard"始终面向相机 Shader "billboard" {Properties{_MainTex ("Main Tex", 2D) = "white" {}_Color (

GUN、MIT、Apache、BSD、MPL各种开源协议介绍和区别

文章目录 目前主流的开源协议GNU通用公共许可证&#xff08;GNU General Public License&#xff0c;GPL&#xff09;MIT许可证Apache许可证BSD许可证MPL Mozilla公共许可证&#xff08;Mozilla Public License&#xff0c;MPL&#xff09; 各种主流开源协议的区别GNU通用公共许…

IP地址的表示方式与分类

一、IP地址简介 IP地址是互联网的协议地址&#xff0c;为互联网的每一个网络和每一台主机分配一个逻辑地址。IP协议是为了计算机互相连接进行通信而设计的协议。 二、IP地址的表示方式 IP地址是一个32位的二进制数&#xff0c;通常被分割为4个“8位二进制数”(也就相当于四个…

数学建模| 快速入门(以华为杯2019F题为例)

数学建模快速入门&#xff08;华为杯2019F题为例&#xff09; 参考论文华为杯2019F题第一问为例读题——筛选出有用的信息问题分析——搞清楚目标和要求建立模型——将实际问题转化为数学问题判断题目类型模型假设数据处理航迹规划模型建立 模型求解——实际求解的细节结果分析…

JAVA黑马程序员day12--集合进阶(下部--双列集合)

Map HashMap 练习一 需提前定义学生类&#xff0c;并重写HashMap方法&#xff08;不然无法覆盖&#xff09; public class MapDemo4 {public static void main(String[] args) {//1.创建HashMap对象HashMap<Student,String> hmnew HashMap<>();//2、创建3个学生对…

SAP从放弃到入门系列之MRP中BOM的选择逻辑

翻译大佬的文章&#xff1a; 原文地址如下&#xff1a; 一、概述 BOM选择逻辑比较复杂&#xff0c;涉及到物料主数据的多个自定义和字段&#xff0c;所以我在这里总结一下。 首先&#xff0c;材料的 BOM 可能存在于下面的业务场景中。 1. 多个用途&#xff1a;例如生产BOM、…

怎么关闭管理员权限?

每台电脑在装上系统后&#xff0c;除你自己新建的账户外&#xff0c;会自动新建一个叫administrator的管理计算机(域)的内置账户&#xff0c;它平时是隐藏的&#xff0c;它是计算机管理员的意思&#xff0c;它拥有计算机管理的高权限&#xff0c;我们新建的账户都是在它之下派生…

远程计算机控制软件

远程控制软件允许您连接和控制位于不同位置的设备&#xff0c;对于 IT 帮助台技术人员来说&#xff0c;这是一个很好的工具&#xff0c;可以通过与用户协作、与他们聊天以及安全地访问他们的文件来轻松排除故障和修复远程设备。使用远程控制软件&#xff0c;距离不再是提供技术…