ximo基礎脫殼教程22:手脫ASProtect 1.2/1.23
阿新 • • 發佈:2022-03-10
一、題目
二、分析
1.判斷奇偶性:nums[i] %2 == 0 ;除於等於零 為偶 反之為奇數
2.第一種方法:建立兩個新陣列分別為:奇數 和 偶數 存放的陣列,然後利用條件進行判斷,將每個nums[i] 放到相應數組裡,再裡用到 cancat() (方法用於連線兩個或多個數組) JavaScript Array concat() 方法 (w3school.com.cn) 時間複雜度:O(n) 3.第二種方法:雙指標,一頭指向陣列頭部,一頭指向陣列尾部,頭指標向右進行直到找到偶數,尾指標向左進行直到找到奇數,然後位置互換,執行上一步;時間複雜度 O(n) 三、程式碼/** * @param {number[]} nums * @return {number[]} */ var exchange = function(nums) { let a = new Array(); let b = new Array(); let n = nums.length; for( let i = 0 ; i <= n-1 ; i++){ if( nums[i] %2 == 0 ){ b.push(nums[i]); }else{ a.push(nums[i]); } }return a.concat(b); };
/** * @param {number[]} nums * @return {number[]} */ var exchange = function(nums) { let n = nums.length; let i = 0, j = n -1; if( !n){ return []; } while( i < j){ while( i < n && nums[i]%2 ) i++; while( j >=0 && nums[j]%2 == 0) j--;if( i<j ){ [nums[i],nums[j]] = [nums[j],nums[i]]; i++; j--; } } return nums; };