摆动排序 II · Wiggle Sort II

news/2024/10/18 5:39:48/

 

链接:

题解:

1.先用partition函数,求得n/2的位置的排序

2.然后选取首尾指针(奇数选择1和length-1,偶数选择为1和length-2),进行swap交换

3.每次首指针每次+2,尾指针每次-2

九章算法 - 帮助更多程序员找到好工作,硅谷顶尖IT企业工程师实时在线授课为你传授面试技巧

 

 

 

 

 

这段代码没有通过

class Solution {
public:/*** @param nums: A list of integers* @return: nothing*/void wiggleSort(vector<int> &nums) {// write your code hereif (nums.size() <= 1) {return;}int len = nums.size();kthLargestElement(len/2, nums);if (len % 2 == 0) {int left = 1;int right = nums.size()-2;while (left < right) {swap(nums[left], nums[right]);left += 2;right -= 2;}} else {int left = 1;int right = nums.size() - 1;while (left < right) {swap(nums[left], nums[right]);left += 2;right -= 2;}}}private:int kthLargestElement(int k, vector<int> &nums) {cout << "k=" << k << endl;// write your code hereif (nums.size() <= 0) {return 0;}int left = 0;int right = nums.size()-1;int mid = partition(nums, left, right);//cout << "mid=" << mid << endl;while (mid != k-1) {//cout << "mid=====" << mid << endl;if (mid > k) {right = mid;} else {left = mid;}mid = partition(nums, left, right);}return nums[mid];}int partition(std::vector<int>& nums, int left, int right) {int index = random() % (right-left+1);swap(nums[right], nums[left+index]);int nSmall = left - 1;for (; left < right; ++left) {if (nums[left] <= nums[right]) {++nSmall;swap(nums[left], nums[nSmall]);}}++nSmall;swap(nums[right], nums[nSmall]);cout << nSmall << " val=" << nums[nSmall] << endl;  return nSmall;}
};


http://www.ppmy.cn/news/802423.html

相关文章

你知道如何安装和配置MySQL数据库吗?

MySQL是一种广泛使用的开源关系型数据库系统&#xff0c;它被广泛应用于各种应用程序中。在本篇文章中&#xff0c;我们将学习如何安装和配置MySQL数据库&#xff0c;并进行一些基本的数据库操作。 安装mysql 下面我们以linux操作系统为例&#xff0c;演示一下如何进行mysql的…

CKEditor&ckfindtor

前言 之前的项目中一直使用的是FCKeditor&#xff0c;昨天突然有个想法&#xff1a;为什么不试一下新的CKEditor呢&#xff1f;于是花了大半天的时间去学习它的用法&#xff0c;现在把我的学习过程与大家分享一下。 谈起FCKeditor&#xff0c;相信没几个Web程序员不知道的吧。不…

【CK】ClickHouse入门

简介 ClickHouse是"战斗民族"俄罗斯搜索巨头Yandex公司开源的一个极具"战斗力"的实时数据分析数据库&#xff0c;是面向 OLAP 的分布式列式DBMS&#xff0c;圈内人戏称为"喀秋莎数据库"。ClickHouse简称"CH",但在中文社区里大家更偏爱…

CKPlayer

http://www.ckplayer.com/ 原文&#xff1a;http://www.cnblogs.com/Athrun/p/ckplayer.html <div id"flashcontent"></div><div id"video" style"position:relative;z-index: 100;width:600px;height:400px;"><div id&q…

CYK算法详解

在计算机科学领域&#xff0c;CYK算法&#xff08;也称为Cocke–Younger–Kasami算法&#xff09;是一种用来对 上下文无关文法&#xff08;CFG&#xff0c;Context Free Grammar&#xff09;进行语法分析&#xff08;parsing&#xff09;的算法。该算法最早由John Cocke, Dani…

自然语言处理(NLP)-统计句法分析(CKY算法用于PCFG下的句法分析)

1.先解释何为CFG及PCFG&#xff1a; 一个栗子&#xff1a; 2.CKY算法&#xff08;或称CYK算法&#xff09; “在计算机科学领域&#xff0c;CYK算法&#xff08;也称为Cocke–Younger–Kasami算法&#xff09;是一种用来对 上下文无关文法&#xff08;CFG&#xff0c;Context F…

LeetCode-每日一题【2095.删除链表的中间节点】

题目 给你一个链表的头节点 head 。删除 链表的 中间节点 &#xff0c;并返回修改后的链表的头节点 head 。 长度为 n 链表的中间节点是从头数起第 ⌊n / 2⌋ 个节点&#xff08;下标从 0 开始&#xff09;&#xff0c;其中 ⌊x⌋ 表示小于或等于 x 的最大整数。 对于 n 1、…

从Vue快速上手React

前言 还没使用过React 的 vue同学可以通过这篇博客快速上手React。 1、数据读写 Vue 数据读写&#xff1a; import { ref, reactive } from vueconst str ref<string>(Aos) const obj reactive<Record<string, string>>({name: vue,version: 3.2.x }) …