File tree 1 file changed +54
-0
lines changed
solution/0905.Sort Array By Parity
1 file changed +54
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[] } A
3
+ * @return {number[] }
4
+ */
5
+ // 第一次的做法
6
+ var sortArrayByParity = function ( A ) {
7
+ const len = A . length ;
8
+ if ( len == 1 ) return A ;
9
+ let evenNumber = [ ] ;
10
+ let oddNumber = [ ] ;
11
+ for ( let i = 0 ; i < len ; i ++ ) {
12
+ if ( A [ i ] % 2 == 0 ) {
13
+ evenNumber . push ( A [ i ] ) ;
14
+ }
15
+ if ( A [ i ] % 2 != 0 ) {
16
+ oddNumber . push ( A [ i ] ) ;
17
+ }
18
+ }
19
+ return evenNumber . concat ( oddNumber ) ;
20
+ } ;
21
+ // 修改第一次的代码,只使用一个数组,减少一次合并数组操作
22
+ var sortArrayByParity = function ( A ) {
23
+ const len = A . length ;
24
+ if ( len == 1 ) return A ;
25
+ let eoNum = [ ] ;
26
+ for ( let i = 0 ; i < len ; i ++ ) {
27
+ if ( A [ i ] % 2 == 1 ) {
28
+ eoNum . push ( A [ i ] ) ;
29
+ }
30
+ if ( A [ i ] % 2 == 0 ) {
31
+ eoNum . unshift ( A [ i ] ) ;
32
+ }
33
+ }
34
+ return eoNum ;
35
+ } ;
36
+ // 双指针做法,无需新数组,push和unshift操作,利用第三个变量进行交换
37
+ var sortArrayByParity = function ( A ) {
38
+ const len = A . length ;
39
+ if ( len == 1 ) return A ;
40
+ let i = 0 ,
41
+ j = len - 1 ;
42
+ while ( i < j ) {
43
+ if ( ( A [ i ] % 2 == 1 ) && ( A [ j ] % 2 == 0 ) ) {
44
+ let temp = A [ j ] ;
45
+ A [ j ] = A [ i ] ;
46
+ A [ i ] = temp ;
47
+ i ++ ;
48
+ j -- ;
49
+ }
50
+ if ( A [ i ] % 2 == 0 ) i ++ ;
51
+ if ( A [ j ] % 2 == 1 ) j -- ;
52
+ }
53
+ return A ;
54
+ } ;
You can’t perform that action at this time.
0 commit comments