C语言 | Leetcode C语言题解之第324题摆动排序II

news2024/9/21 4:37:02

题目:

题解:

static inline void swap(int *a, int *b) {
    int c = *a;
    *a = *b;
    *b = c;
}

static inline int partitionAroundPivot(int left, int right, int pivot, int *nums) {
    int pivotValue = nums[pivot];
    int newPivot = left;
    swap(&nums[pivot], &nums[right]);
    for (int i = left; i < right; ++i) {
        if (nums[i] > pivotValue) {
            swap(&nums[i], &nums[newPivot++]);
        }
    }
    swap(&nums[right], &nums[newPivot]);
    return newPivot;
}

static int findKthLargest(int* nums, int numsSize, int k) {
    int left = 0, right = numsSize - 1;
    srand(time(0));
    while (left <= right) {
        int pivot = rand() % (right - left + 1) + left;
        int newPivot = partitionAroundPivot(left, right, pivot, nums);
        if (newPivot == k - 1) {
            return nums[newPivot];
        } else if (newPivot > k - 1) {
            right = newPivot - 1;
        } else { 
            left = newPivot + 1;
        }
    }
    return nums[k - 1];
}

static inline int transAddress(int i, int n) {
    return (2 * n - 2 * i - 1) % (n | 1);
}

void wiggleSort(int* nums, int numsSize) {
    int x = (numsSize + 1) / 2;
    int mid = x - 1;
    int target = findKthLargest(nums, numsSize, numsSize - mid);
    for (int k = 0, i = 0, j = numsSize - 1; k <= j; k++) {
        if (nums[transAddress(k, numsSize)] > target) {
            while (j > k && nums[transAddress(j, numsSize)] > target) {
                j--;
            }
            swap(&nums[transAddress(k, numsSize)], &nums[transAddress(j--, numsSize)]);
        }
        if (nums[transAddress(k, numsSize)] < target) {
            swap(&nums[transAddress(k, numsSize)], &nums[transAddress(i++, numsSize)]);
        }
    }
}

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

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

相关文章

谈谈冯诺依曼体系

我们都知道冯诺依曼体系这张图最为代表性&#xff0c;而接下来我们就来浅谈一下各部分之间的作用~ 输入设备&#xff1a;键盘&#xff0c;磁盘&#xff0c;网卡&#xff0c;话筒等等 输出设备&#xff1a;磁盘&#xff0c;网卡&#xff0c;声卡&#xff0c;显示屏等等 这些硬件…

TiDE时间序列模型预测(Long-term Forecasting with TiDE: Time-series Dense Encoder)

时间序列预测&#xff0c;广泛用于能源、金融、交通等诸多行业&#xff0c;传统的统计模型&#xff0c;例如ARIMA、GARCH等因其简单高效而被广泛使用&#xff0c;近年来&#xff0c;随着深度学习的兴起&#xff0c;基于神经网络的预测模型也备受关注&#xff0c;表现出强大的预…

EHS行业趋势:2024年的EHS管理新动向

随着全球气候变化和资源枯竭等问题的日益严峻&#xff0c;企业对环境、健康与安全&#xff08;EHS&#xff09;管理的重视程度达到了前所未有的高度。特别是在“双碳”目标的推动下&#xff0c;绿色制造、ESG&#xff08;环境、社会与治理&#xff09;和可持续发展已成为企业的…

KAFKA-03-kafka 脚本命令使用详解

0&#xff1a;脚本总结 1、kafka-acls.sh #配置&#xff0c;查看kafka集群鉴权信息 2、kafka-configs.sh #查看&#xff0c;修改kafka配置3、kafka-console-consumer.sh #消费命令 4、kafka-console-producer.sh #生产命令 5、kafka-consumer-groups.sh #查看消费者组&#xf…

二百五十六、MySQL——MySQL新用户设置密码报错

一、目的 在执行脚本创建海豚调度器在MySQL中的数据库以及用户时&#xff0c;发现脚本执行报错 二、原先脚本内容 三、执行报错 [roothurys22 dolphinscheduler]# sh mysql-metastore.sh ------------ 在MySQL中创建元数据库及用户 ------------ mysql: [Warning] Using a…

9、springboot3 vue3开发平台-前端- vue3工程创建

1. 项目说明 技术选择&#xff1a; 使用vue3 TS ElementPlus&#xff0c; 开发使用vite构建 目的&#xff1a; 搭建管理系统框架&#xff0c; 包含动态路由&#xff0c; 动态菜单&#xff0c; 用户&#xff0c;角色&#xff0c; 菜单&#xff0c;权限管理&#xff0c;日志等…

《2024华数杯》C题第四问 模型建立+优化算法

第四问解决思路 目标 在144小时内&#xff0c;外国游客要尽可能游览更多的城市&#xff0c;同时要使门票和交通的总费用尽可能少。 模型与假设 点击获取代码思路文献数据 假设&#xff1a; ○ 游客在每个城市只游览一个评分最高的景点。 ○ 城市之间的交通方式只选择高铁。 ○…

Linux学习笔记9(Linux包管理)

目录 归档包管理 归档 查看归档包 解归档包 压缩包管理 Zip/unzip gzip/gunzip bzip2/bunzip2 源码包安装软件 三大步&#xff1a; 预备步骤&#xff1a;安装依赖的编译库 一、./configure --prefix/usr/local/nginx 二、make 三、make install 软件包安装 配置…

云原生 (1)

一、实验准备 1&#xff0c;准备一台rhel7的主机,并开启主机的图形。 2&#xff0c;关闭vmware DHCP功能。 3&#xff0c;配置好可用IP。 4&#xff0c;关闭火墙。 二、安装图形化kickstart自动安装脚本的工具 1. 基础配置 yum install system-config-kickstart ——安…

短链接生成-短链接-短网址-短链接生成接口-短链接转换接口-短网址URL生成-短链接地址

短网址是一种将长URL缩短的技术&#xff0c;通常由一些服务提供&#xff0c;如Bitly、TinyURL等。通过这种技术&#xff0c;原始的网址会被转换成简短且易于分享的形式&#xff0c;比如http://wq.cn/weds代替原本的https://www.example.com/a Very Long URL。短网址服务会在服务…

与大语言模型Transformer的奇妙旅程

嘿&#xff0c;大家好&#xff01;今天我想和你们聊聊我的一次奇妙旅程——和大语言模型的亲密接触。你们知道吗&#xff1f;这些家伙可不仅仅是冷冰冰的代码&#xff0c;它们简直就像是拥有智慧的伙伴一样&#xff01;想象一下&#xff0c;如果我能和一个超级聪明的大语言模型…

10、springboot3 vue3开发平台-前端-elementplus, axios配置及封装使用, 包含token 存储

1. 准备工作 1.1 清除项目自带页面 删除views和components目录下所有东西&#xff1a; 1.2 修改App.vue <script setup lang"ts"></script><template><router-view></router-view> </template><style scoped></st…

能量柱 成交量 高抛低吸 文华财经指标公式源码 幅图 九稳量化系统 全网最火指标公式源码 期货最牛的买卖指标源码公式

我觉得期货市场就是一个战场的翻版。 但是专注并不是每天盯盘&#xff0c;这样交易容易耗费太多的精神和心力。交易要做趋势&#xff0c;如果萎靡&#xff0c;趋势根本就跟不上。不要用生命&#xff0c;身体去交易&#xff0c;要用思想去交易。做单要做的舒畅&#xff0c;才能…

【SEO优化】做好外部站点优化让你获取更多链接

今天我们就来谈谈外部网站优化&#xff0c;这在搜索引擎优化中的重要性不亚于内部优化。但与此同时&#xff0c;SEO的初学者往往不会给予太多的关注&#xff08;由于各种原因&#xff09;。顺便说一句&#xff0c;这对谷歌的算法非常重要。如果没有高质量和全面的外部优化&…

sql注入总结-1

SQL注入 1.查看类型 如果是字符型注入 我们可以输入?id1\ 弹出的 near 1) LIMIT 0,1 报错类 型为‘&#xff09; near 1)) LIMIT 0,1 报错类型为)) 切在变为?id1\--后恢复正常则可以判断类型 2.id1和id-1的区别 id1&#xff1a;这个条件通常用于查找数据库中 id 列值为 …

ZICO2: 1【附代码】(权限提升)

靶机下载地址&#xff1a; https://vulnhub.com/entry/zico2-1,210/https://vulnhub.com/entry/zico2-1,210/ 1. 主机发现端口扫描目录扫描敏感信息收集 1.1. 主机发现 nmap -sn 192.168.5.0/24|grep -B 2 08:00:27:62:AC:7F 1.2. 端口扫描 nmap -p- 192.168.5.66 1.3. 目…

Effective-Java-Chapter3

https://github.com/clxering/Effective-Java-3rd-edition-Chinese-English-bilingual/blob/dev/Chapter-3 准则一 覆盖 equals 方法时应遵守的约定 重写equals 方法需要满足的特性 Reflexive: For any non-null reference value x, x.equals(x) must return true. 反身性&a…

科普文:微服务之Spring Cloud Alibaba分布式事务组件Seata4种分布式事务模式及其选择

https://zhouxx.blog.csdn.net/article/details/140940976 科普文&#xff1a;微服务之Spring Cloud Alibaba分布式事务组件Seata设计方案-CSDN博客 一、概述 Seata是一款开源的分布式事务解决方案&#xff0c;致力于提供高性能和简单易用的分布式事务服务。Seata提供了AT、…

基于springboot+vue+uniapp的智慧校园管理系统小程序

开发语言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#…

[网鼎杯 2018]Comment

使用环境为https://adworld.xctf.org.cn/challenges&#xff0c;搜索题目[网鼎杯 2018]Comment。 进入环境&#xff0c;发现为一个留言板&#xff0c;点击发帖试试。 尝试发帖 跳转到登录页面&#xff0c;根据提示使用burp进行暴力破解。 发现payload为666时状态码不同。 尝试…