leetcode 324 擺動排序 II

2021-09-27 21:33:24 字數 2206 閱讀 7344

思路

將給定陣列排序並逆序;

拆分處理後的陣列,得到兩個陣列;

將乙個陣列插入至另乙個陣列。

[4,6,5,5]

1. 排序、逆序 ==> [6,5,5,4]

2. 拆分 ==> [6,5] & [5,4]

3. 合併 ==> [5, ,4, ]

[ ,6, ,5]

4. result ==> [5,6,4,5]

def

resolution

(nums)

: length =

len(nums)

if(length ==

0or length ==1)

:return nums

nums.sort(reverse=

true

) nums_1, nums_2 =

,# round函式(四捨五入):將4.5 => 4, 將4.51 => 5

for i in

range

(round

((length/2)

-0.1))

:0))

nums_2 = nums.copy(

) count =

1while

(nums_1)

: nums_2.insert(count, nums_1.pop(0)

) count +=

2 nums = nums_2

return nums

if __name__ ==

"__main__"

: nums =[1

,1,2

,2,2

,2,1

,1,1

]# ==> [1, 2, 1, 2, 1, 2, 1, 2, 1]

# nums = [4,5,5,6] ==> [5, 6, 4, 5]

# nums = [2,1] ==> [1,2]

res = resolution(nums)

print

(res)

function

sort_fun

(prev, curr)

else

if(prev < curr)

else

}function

resolution

(nums)

nums.

sort

(sort_fun)

; length /=2;

length = length.

tofixed(0

);if(length *

2!= nums.length)

let nums_1 = nums.

slice(0

, length)

;let nums_2 = nums.

slice

(length, nums.length)

;let res =

, count =0;

while

(true)if

(count < nums_1.length)

if(count > nums_1.length && count > nums_2.length)

count +=1;

}}let obj =[1

,2,1

,2,2

,2,1

,1,1

];// ==> (9) [1, 2, 1, 2, 1, 2, 1, 2, 1]

// obj = [2,1] ==> (2) [1, 2]

// obj = [4,5,5,6] ==> (4) [5, 6, 4, 5]

// obj = [1,5,1,1,6,4] ==> (6) [1, 6, 1, 5, 1, 4]

let res =

resolution

(obj)

;console.

info

(res)

;

LeetCode 324 擺動排序 II

給定乙個無序的陣列nums,將它重新排列成nums 0 nums 1 nums 2 nums 3 的順序。示例 1 輸入 nums 1,5,1,1,6,4 輸出 乙個可能的答案是 1,4,1,5,1,6 示例 2 輸入 nums 1,3,2,2,3,1 輸出 乙個可能的答案是 2,3,1,3,1,2...

leetcode 324 擺動排序 II

給定乙個無序的陣列 nums,將它重新排列成 nums 0 nums 1 nums 2 nums 3 的順序。示例 1 輸入 nums 1,5,1,1,6,4 輸出 乙個可能的答案是 1,4,1,5,1,6 示例 2 輸入 nums 1,3,2,2,3,1 輸出 乙個可能的答案是 2,3,1,3,1...

LeetCode 324 擺動排序 II

給定乙個無序的陣列 nums,將它重新排列成 nums 0 nums 1 nums 2 nums 3 的順序。示例 1 輸入 nums 1,5,1,1,6,4 輸出 乙個可能的答案是 1,4,1,5,1,6 示例 2 輸入 nums 1,3,2,2,3,1 輸出 乙個可能的答案是 2,3,1,3,1...