Lily's Homework

  • + 0 comments

    javascript

    function lilysHomework(arr) {
    
        let sorted = arr.slice().sort((a, b) => a - b);
        let arr2 = arr.slice();
        let check = {};
        let check2 = {};
        let ans = 0;
        let ans2 = 0;
        for (let i=0;i<sorted.length;++i) {
            check[sorted[i]] = i;
        }
        for (let i=0;i<sorted.length;++i) {
            check2[sorted[i]] = sorted.length-1-i;
        }
    
        for(let i=0;i<arr.length;) {
            if (check[arr[i]] != i) {
                let t = arr[i];
                let t_i = check[arr[i]];
                arr[i] = arr[check[arr[i]]];
                arr[t_i] = t;
                ++ans;
            } else {
                ++i;
            }    
        }
        
        for(let i=arr2.length - 1;i>0;) {
            if (check2[arr2[i]] != i) {
                let t = arr2[i];
                let t_i = check2[arr2[i]];
                arr2[i] = arr2[check2[arr2[i]]];
                arr2[t_i] = t;
                ++ans2;
            } else {
                --i;
            }    
        }
        
        return ans < ans2 ? ans : ans2;
    }