首页 > 代码库 > LeetCode 280. Wiggle Sort C#
LeetCode 280. Wiggle Sort C#
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]
.
Solution:
Loop through, when odd index num should be greater then the previous num;
when even index num should be smaller then the previous num;
So if even index num is greater then the previous num then it must be greater then the previous of previous num too, so only swap once.
1 public class Solution { 2 public void WiggleSort(int[] nums) { 3 int l = nums.Length; 4 for(int i=1; i<l;i++) 5 { 6 if(i%2==1) 7 { 8 if(nums[i]<nums[i-1]) 9 { 10 Swap(nums, i); 11 } 12 } 13 else 14 { 15 if(nums[i]>nums[i-1]) 16 { 17 Swap(nums, i); 18 } 19 } 20 } 21 } 22 public void Swap(int[] nums, int i) 23 { 24 int temp = nums[i-1]; 25 nums[i-1]=nums[i]; 26 nums[i] = temp; 27 } 28 }
LeetCode 280. Wiggle Sort C#
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。