1. 程式人生 > >leetcode 280.Wiggle Sort 、324. Wiggle Sort II

leetcode 280.Wiggle Sort 、324. Wiggle Sort II

Wiggle Sort:

      注意:解法一是每次i增加2,題目不是保證3個3個的情況,而是整個陣列都要滿足要求。

      解法一錯誤版本:

      如果nums的長度是4,這種情況下nums[i+1]會越界。但是如果你用的是i和i-1的組合,一定可以不會越界,因為i不越界i-1就一定不會越界,for迴圈控制i,i越界了整個迴圈就結束了。

class Solution {
public:
    void wiggleSort(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        
for(int i = 1;i < nums.size();i += 2){ swap(nums[i],nums[i+1]); } return; } };

     解法一正確版本:

     如果沒有if這個語句,當nums.size() <= 2時,for迴圈裡的nums[i]會出現陣列越界

class Solution {
public:
    void wiggleSort(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        
if(nums.size() <= 2) return; for(int i = 2;i < nums.size();i += 2) swap(nums[i],nums[i-1]); return; } };

       解法二

class Solution {
public:
    void wiggleSort(vector<int>& nums) {
        if(nums.size() <= 1)
            return
; for(int i = 1;i < nums.size();i++){ if((i % 2 == 1 && nums[i] < nums[i-1]) || (i % 2 == 0 && nums[i] > nums[i-1])) swap(nums[i],nums[i-1]); } return; } };

https://www.cnblogs.com/grandyang/p/5177285.html

Wiggle Sort II

與1不同,這個不能為等號。排序後,兩個指標,一個從中間往前,一個從末尾往前。j、k的初始化這注意,必須保證0~j比j+1~k大於等於1個,這樣才能填滿

class Solution {
public:
    void wiggleSort(vector<int>& nums) {
        vector<int> tmp = nums;
        sort(tmp.begin(),tmp.end());
        int j = (nums.size() - 1)/2,k = nums.size() - 1;
        for(int i = 0;i < nums.size();i++){
            nums[i] = i % 2 ? tmp[k--] : tmp[j--];
        }
        return;
    }
};

http://www.cnblogs.com/grandyang/p/5139057.html

相關推薦

leetcode 280.Wiggle Sort 324. Wiggle Sort II

Wiggle Sort:       注意:解法一是每次i增加2,題目不是保證3個3個的情況,而是整個陣列都要滿足要求。       解法一錯誤版本:       如果nums的長度是4,這種情況下nums[i+1]會越界。但是如果你用的是i和i-1的組合,一定可以不會越界,因為i不越界i-1就一定不會越界,

leetcode鏈表--6linked-list-cycle-ii(有環單鏈表環的入口結點)

pre you head lis 頭結點 tex -a init int 題目描述 Given a linked list, return the node where the cycle begins. If there is no cycle, returnnull

LeetCode - 55. Jump Game45. Jump Game II403. Frog Jump - 一維陣列跳躍問題 (多種方法)

55 - Jump Game  -  Medium 45 - Jump Game II  -  Hard 403 - Frog Jump - Hard 上邊三題都是一維陣列中的DP演算法題,一起總結一下: 55 - Jump

leetcode 224. Basic Calculator 227. Basic Calculator II

+= ack col 遇到 amp 數值 nbsp basic 符號位 這種題都要設置一個符號位的變量 224. Basic Calculator 設置數值和符號兩個變量,遇到左括號將數值和符號加進棧中 class Solution { public:

Leetcode 280: Wiggle Sort

public gles || pan turn lee class ble length Given an unsorted array nums, reorder it in-place such that nums[0] <= nums[1] >= nums

【死磕演算法之1刷leetcode】——324 Wiggle Sort擺動序列2

題目描述 Given an unsorted array nums, reorder it such that nums[0] < nums[1] > nums[2] < nums[3]… Example: Example 1: Input: nums = [1, 5,

Leetcode 324 Wiggle Sort II

題目描述 Given an unsorted array nums, reorder it such that nums[0] < nums[1] > nums[2] < nums[3]… Example 1: Input: nums = [1, 5, 1, 1

280. Wiggle Sort/324. Wiggle Sort II

ron correct pre 如果 += == div cond pri 280 Given an unsorted array nums, reorder it in-place such that nums[0] <= nums[1] >= nums[2]

324. Wiggle Sort II

pla vector 如何 num hat else 1-n fin 一起 Given an unsorted array nums, reorder it such that nums[0] < nums[1] > nums[2] < nums[3]..

sortuniqwc

geb 6.4 升序 排序。 文件的 toolbar 顯示 tor 多少 sort sort 命令對 File 參數指定的文件中的行排序,並將結果寫到標準輸出。如果 File 參數指定多個文件,那麽 sort 命令將這些文件連接起來,並當作一個文件進行排序。 sort語法

shell特殊符號,cutsortwcuniqteetrsplit命令

shell特殊符號 cut、sort、wc、uniq、tee、tr、split命令 *代表0個或多個任意字符[root@localhost ~]# ls *txt11.txt 1.txt 22.txt 2.txt aa.txt a.txt ?只代表一個任意字符不管是數字還是字母,只要是一個

python sortsorted

所有 ima getter 保持 參數 比較 們的 分享 .com 1. (1).sorted()方法返回一個新列表(默認升序)。 list.sort() (2).另一個不同:list.sort()方法僅被定義在list中,sorted()方法對所有的可叠代序列都有效。

python列表排序方法reversesortsorted

正向 無需 .so 得到 har () 因此 好的 返回鍵 python語言中的列表排序方法有三個:reverse反轉/倒序排序、sort正序排序、sorted可以獲取排序後的列表。在更高級列表排序中,後兩中方法還可以加入條件參數進行排序。 reverse()方法 將列表

STL_算法_對全部元素排序(sortstable_sort)

cpp using tis cti ces it! 簡單 efault 註意 C++ Primer 學習中。。。 ? 簡單記錄下我的學習過程?(代碼為主)

Shell基礎:shell變量環境變量配置文件shell特殊符_cutsortwcuniq

逆轉 重定向 空格 9.png pro 終端 split 打開 style shell變量1.命令 env 列出系統預設的全部系統變量(變量都是大寫字母)2.命令 set 可以查看到系統預設的變量,也可以看到用戶自定義的變量。3.自定義變量: 變

2018-06-01筆記(特殊符號 cutwcsortuniqteetrsplit)

linux8.10 shell特殊符號&cut命令 shell常用的幾個特殊符號 “*” 代表零個或多個任意字符 [root@localhost ~]# ls test* test test1 test2 test3 “?” 代表一個任意字符 [root@localhost ~]# ls t

Linux中 sortuniqwccut 隨筆

inf 多少 單位 alt 相同 大小寫 文字 tab -c sort 命令 對 File 參數指定的文件中的行排序,並將結果寫到標準輸出。如果 File 參數指定多個文件,那麽 sort 命令將這些文件連接起來,並當作一個文件進行排序。 選項與參數:-f :忽略大小寫的

linux下的sortuniqjoin的使用

去除 列數 tro 可見 ron family style 小寫字母 vertica >>>Sort 命令常用相關選項:選項說明-c會檢查文件順序是否已排好序,如果亂序,則輸出第一個亂序的行的相關信息,然後返回1-k指定排序的列數-b忽略每一行前面所有的空

python sortsortedreversereverd的區別

和集 () 反轉 從大到小 序列 one sum 順序 obj sort、sorted、reverse、reversed的區別 !!! error 首先應該區分的是,sort和reverse是列表的一個方法。字符串、元組、字典、集合是沒有這兩個方法的。而sorted和rev

Numpy--區分sort()sorted()argsort()

最大的區分: sort()與sorted()只是對列表的排序; argsort()是對陣列的排序; ①、sort() sort() 函式用於對原列表進行排序,如果指定引數,則使用比較函式指定的比較函式。 aList = [123, 134, 101, 126, 128] aLis