摘要:就能滿足題目要求。代碼先將數(shù)組排序?qū)?shù)組中一對(duì)一對(duì)交換交換法復(fù)雜度時(shí)間空間思路題目對(duì)搖擺排序的定義有兩部分如果是奇數(shù),如果是偶數(shù),所以我們只要遍歷一遍數(shù)組,把不符合的情況交換一下就行了。
Wiggle Sort
排序法 復(fù)雜度Given an unsorted array nums, reorder it in-place such that nums[0] <= nums[1] >= nums[2] <= nums[3]....
For example, given nums = [3, 5, 2, 1, 6, 4], one possible answer is [1, 6, 2, 5, 3, 4].
時(shí)間 O(NlogN) 空間 O(1)
思路根據(jù)題目的定義,搖擺排序的方法將會(huì)很多種。我們可以先將數(shù)組排序,這時(shí)候從第3個(gè)元素開始,將第3個(gè)元素和第2個(gè)元素交換。然后再從第5個(gè)元素開始,將第5個(gè)元素和第4個(gè)元素交換,以此類推。就能滿足題目要求。
代碼public class Solution { public void wiggleSort(int[] nums) { // 先將數(shù)組排序 Arrays.sort(nums); // 將數(shù)組中一對(duì)一對(duì)交換 for(int i = 2; i < nums.length; i+=2){ int tmp = nums[i-1]; nums[i-1] = nums[i]; nums[i] = tmp; } } }交換法 復(fù)雜度
時(shí)間 O(N) 空間 O(1)
思路題目對(duì)搖擺排序的定義有兩部分:
如果i是奇數(shù),nums[i] >= nums[i - 1]
如果i是偶數(shù),nums[i] <= nums[i - 1]
所以我們只要遍歷一遍數(shù)組,把不符合的情況交換一下就行了。具體來說,如果nums[i] > nums[i - 1], 則交換以后肯定有nums[i] <= nums[i - 1]。
代碼public class Solution { public void wiggleSort(int[] nums) { for(int i = 1; i < nums.length; i++){ // 需要交換的情況:奇數(shù)時(shí)nums[i] < nums[i - 1]或偶數(shù)時(shí)nums[i] > nums[i - 1] if((i % 2 == 1 && nums[i] < nums[i-1]) || (i % 2 == 0 && nums[i] > nums[i-1])){ int tmp = nums[i-1]; nums[i-1] = nums[i]; nums[i] = tmp; } } } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/64572.html
摘要:每隔兩位交換一次,如,處理為。難點(diǎn)是會(huì)有相等的元素,而要求相鄰元素除了外,不能相等。那么就不能取排序后相鄰的元素交換,而要和后面的元素交換。例如犧牲空間的做法是,建立一個(gè)新數(shù)組,按照我們想要的規(guī)律放入元素,最后回原數(shù)組。 Wiggle Sort Problem Given an unsorted array nums, reorder it in-place such that num...
Problem Given an unsorted array nums, reorder it in-place such that nums[0] = nums[2] nums[i-1]) swap(nums, i, i-1); } } } private void swap(int[] nums, int i, int j) { ...
摘要:如果沒復(fù)雜度的要求,先也可以,再交叉放入數(shù)字也可以。交叉的時(shí)候注意是按照,降序的。 Wiggle Sort 題目鏈接:https://leetcode.com/problems... 這道題允許等號(hào),相對(duì)簡(jiǎn)單,有兩種方法:1. sort然后交換奇數(shù)位和它下一位的元素,2. 不滿足條件的時(shí)候直接交換 可以用遞推來說明一下這么做的正確性: 假設(shè)到第i位之前都滿足題目要求的關(guān)系 現(xiàn)在比較...
摘要:最后,將動(dòng)畫函數(shù)選為。的表現(xiàn)狀態(tài)就是起止過程比較緩慢,中間過渡迅速。褪色效果首先,添加一個(gè)褪色的過渡。通過百分比的方式指定動(dòng)畫的進(jìn)度相對(duì)于初始位置右移。同時(shí)希望動(dòng)畫持續(xù)秒的時(shí)長(zhǎng),采用的動(dòng)畫效果。 CSS不一定要寫得多么復(fù)雜才能實(shí)現(xiàn)特殊效果。如下就是三個(gè)超級(jí)簡(jiǎn)單的過渡的例子,可能只是幾行代碼,但是添加到Web應(yīng)用程序中,卻會(huì)讓它增色不少。showImg(https://segmentfa...
摘要:最后,將動(dòng)畫函數(shù)選為。的表現(xiàn)狀態(tài)就是起止過程比較緩慢,中間過渡迅速。褪色效果首先,添加一個(gè)褪色的過渡。通過百分比的方式指定動(dòng)畫的進(jìn)度相對(duì)于初始位置右移。同時(shí)希望動(dòng)畫持續(xù)秒的時(shí)長(zhǎng),采用的動(dòng)畫效果。 CSS不一定要寫得多么復(fù)雜才能實(shí)現(xiàn)特殊效果。如下就是三個(gè)超級(jí)簡(jiǎn)單的過渡的例子,可能只是幾行代碼,但是添加到Web應(yīng)用程序中,卻會(huì)讓它增色不少。showImg(https://segmentfa...
閱讀 2612·2021-11-22 15:25
閱讀 1440·2021-11-15 17:59
閱讀 1138·2021-09-29 09:34
閱讀 1548·2021-09-26 09:46
閱讀 3035·2021-09-02 15:40
閱讀 1193·2019-08-30 15:56
閱讀 3285·2019-08-30 15:55
閱讀 696·2019-08-29 17:08