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鏈表--6、linked-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 Game、45. Jump Game II、403. 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]..
sort、uniq、wc
geb 6.4 升序 排序。 文件的 toolbar 顯示 tor 多少 sort sort 命令對 File 參數指定的文件中的行排序,並將結果寫到標準輸出。如果 File 參數指定多個文件,那麽 sort 命令將這些文件連接起來,並當作一個文件進行排序。 sort語法
shell特殊符號,cut、sort、wc、uniq、tee、tr、split命令
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 sort、sorted
所有 ima getter 保持 參數 比較 們的 分享 .com 1. (1).sorted()方法返回一個新列表(默認升序)。 list.sort() (2).另一個不同:list.sort()方法僅被定義在list中,sorted()方法對所有的可叠代序列都有效。
python列表排序方法reverse、sort、sorted
正向 無需 .so 得到 har () 因此 好的 返回鍵 python語言中的列表排序方法有三個:reverse反轉/倒序排序、sort正序排序、sorted可以獲取排序後的列表。在更高級列表排序中,後兩中方法還可以加入條件參數進行排序。 reverse()方法 將列表
STL_算法_對全部元素排序(sort、stable_sort)
cpp using tis cti ces it! 簡單 efault 註意 C++ Primer 學習中。。。 ? 簡單記錄下我的學習過程?(代碼為主)
Shell基礎:shell變量、環境變量配置文件、shell特殊符_cut、sort、wc、uniq
逆轉 重定向 空格 9.png pro 終端 split 打開 style shell變量1.命令 env 列出系統預設的全部系統變量(變量都是大寫字母)2.命令 set 可以查看到系統預設的變量,也可以看到用戶自定義的變量。3.自定義變量: 變
2018-06-01筆記(特殊符號 、cut、wc、sort、uniq、tee、tr、split)
linux8.10 shell特殊符號&cut命令 shell常用的幾個特殊符號 “*” 代表零個或多個任意字符 [root@localhost ~]# ls test* test test1 test2 test3 “?” 代表一個任意字符 [root@localhost ~]# ls t
Linux中 sort、uniq、wc、cut 隨筆
inf 多少 單位 alt 相同 大小寫 文字 tab -c sort 命令 對 File 參數指定的文件中的行排序,並將結果寫到標準輸出。如果 File 參數指定多個文件,那麽 sort 命令將這些文件連接起來,並當作一個文件進行排序。 選項與參數:-f :忽略大小寫的
linux下的sort、uniq、join的使用
去除 列數 tro 可見 ron family style 小寫字母 vertica >>>Sort 命令常用相關選項:選項說明-c會檢查文件順序是否已排好序,如果亂序,則輸出第一個亂序的行的相關信息,然後返回1-k指定排序的列數-b忽略每一行前面所有的空
python sort、sorted、reverse、reverd的區別
和集 () 反轉 從大到小 序列 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