-
-
Notifications
You must be signed in to change notification settings - Fork 291
Expand file tree
/
Copy path950.java
More file actions
63 lines (61 loc) · 1.98 KB
/
950.java
File metadata and controls
63 lines (61 loc) · 1.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
__________________________________________________________________________________________________
sample 1 ms submission
class Solution {
public int[] deckRevealedIncreasing(int[] deck) {
Arrays.sort(deck);
return myDeckRevealedIncreasing(deck,false);
}
public int[] myDeckRevealedIncreasing(int[] deck,boolean needReverse) {
if(deck==null)return null;
int len = deck.length;
if(len==0)return null;
int[] res = new int[len];
int mid = (len+1)/2;
for(int i = 0;i < mid;i++){
res[i*2] = deck[i];
}
int left = len/2;
int[] leftNums = new int[left];
for(int i = mid;i < len;i++){
leftNums[i-mid] = deck[i];
}
boolean isNeed = false;
if(len%2!=0)isNeed = true;
int[] leftRes = myDeckRevealedIncreasing(leftNums,isNeed);
if(leftRes!=null){
for(int i = 0;i < left;i++){
res[i*2+1] = leftRes[i];
}
}
if(needReverse){
res = adapt(res);
}
return res;
}
int[] adapt(int[] list){
if(list==null)return null;
int len = list.length;
int[] res = new int[len];
for(int i=1;i<len;i++){
res[i] = list[i-1];
}
res[0] = list[len-1];
return res;
}
}
__________________________________________________________________________________________________
sample 35952 kb submission
class Solution {
public int[] deckRevealedIncreasing(int[] deck) {
Arrays.sort(deck);
Deque<Integer> deque = new LinkedList<>();
for (int i = deck.length-1 ; i >= 0 ; i--) {
deque.offerFirst(deck[i]);
if (i != 0) {
deque.offerFirst(deque.pollLast());
}
}
return deque.stream().mapToInt(Integer::intValue).toArray();
}
}
__________________________________________________________________________________________________