时间: 2020-11-23|72次围观|0 条评论

原题链接在这里:https://leetcode.com/problems/wiggle-sort/

题目:

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].

题解:

当 i 是奇数时,若nums[i] < nums[i-1], 互换。

当 i 是偶数时,若nums[i] > nums[i-1], 互换。

Time Complexity: O(n). Space: O(1).

AC Java:

 1 public class Solution {
 2     public void wiggleSort(int[] nums) {
 3         if(nums == null || nums.length == 0){
 4             return;
 5         }
 6         for(int i = 1; i<nums.length; i++){
 7             if(i%2 == 1){
 8                 if(nums[i] < nums[i-1]){
 9                     swap(nums, i-1, i);
10                 }
11             }else{
12                 if(nums[i] > nums[i-1]){
13                     swap(nums, i-1, i);
14                 }
15             }
16         }
17     }
18     private void swap(int [] nums, int i, int j){
19         int temp = nums[i];
20         nums[i] = nums[j];
21         nums[j] = temp;
22     }
23 }

 跟上Wiggle Sort II

转载于:https://www.cnblogs.com/Dylan-Java-NYC/p/5186340.html

原文链接:https://blog.csdn.net/weixin_30342827/article/details/97989946

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《LeetCode Wiggle Sort
   

还没有人抢沙发呢~