1. 程式人生 > 其它 >ximo基礎脫殼教程22:手脫ASProtect 1.2/1.23

ximo基礎脫殼教程22:手脫ASProtect 1.2/1.23

一、題目

 

二、分析

  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; };