第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

我如何與數(shù)組中的其余元素進(jìn)行比較

我如何與數(shù)組中的其余元素進(jìn)行比較

白板的微信 2023-01-06 15:38:00
我正在研究一個(gè) leetcode 問(wèn)題,我想不出一種方法來(lái)將數(shù)組中的其余元素相互比較。我計(jì)算出最大和最小的數(shù)字,但與其他數(shù)字進(jìn)行比較是我遇到的麻煩。您將在下面找到問(wèn)題和我的工作:有多少數(shù)字小于當(dāng)前數(shù)字?給定數(shù)組 nums,對(duì)于每個(gè) nums[i],找出數(shù)組中有多少個(gè)數(shù)字小于它。也就是說(shuō),對(duì)于每個(gè) nums[i],您必須計(jì)算有效 j 的數(shù)量,使得 j != i 和 nums[j] < nums[i]。返回?cái)?shù)組中的答案。示例 1:Input: nums = [8,1,2,2,3]Output: [4,0,1,1,3]Explanation: For nums[0]=8 there exist four smaller numbers than it (1, 2, 2 and 3). For nums[1]=1 does not exist any smaller number than it.For nums[2]=2 there exist one smaller number than it (1). For nums[3]=2 there exist one smaller number than it (1). For nums[4]=3 there exist three smaller numbers than it (1, 2 and 2).我的工作:var smallerNumbersThanCurrent = (nums) => {    const output = []    const max = nums.reduce(function(a, b) {        return Math.max(a, b);    });    const min = nums.reduce(function(a, b) {        return Math.min(a, b);    });    for(let i = 0; i < nums.length; i++){        if(nums[i] === max){            output.push(nums.length - 1)        } else if (nums[i] === min){            output.push(0)        }        else if (nums[i] < max && nums[i] > min){            //how do i compare with rest of the elements in the array?                }        }    }
查看完整描述

5 回答

?
一只甜甜圈

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超5個(gè)贊

使用嵌套循環(huán)。


nums = [8,1,2,2,3];

answer = [];

for (let i = 0; i < nums.length; i++) {

  let count = 0;

  for (let j = 0; j < nums.length; j++) {

    if (nums[j] < nums[i]) {

      count++;

    }

  }

  answer.push(count);

  console.log(`For nums[${i}]=${nums[i]} there are ${count} lower numbers`);

}

console.log(`Answer: ${answer}`);

沒(méi)有必要進(jìn)行測(cè)試i != j,因?yàn)閿?shù)字永遠(yuǎn)不會(huì)低于自身。



查看完整回答
反對(duì) 回復(fù) 2023-01-06
?
米琪卡哇伊

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊

一種更簡(jiǎn)單的方法是簡(jiǎn)單地對(duì)數(shù)組進(jìn)行排序,然后元素的索引會(huì)告訴你有多少比它少:


const nums = [8,1,2,2,3]

const sorted = [...nums].sort();

const result = nums.map((i) => {

    return sorted.findIndex(s => s === i);

});

console.log(result);

這樣做的另一個(gè)好處是您不必為每個(gè)數(shù)字搜索整個(gè)數(shù)組。



查看完整回答
反對(duì) 回復(fù) 2023-01-06
?
不負(fù)相思意

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊

一種方法是在值小于當(dāng)前值的條件下過(guò)濾數(shù)組,然后統(tǒng)計(jì)過(guò)濾后的數(shù)組中值的個(gè)數(shù):


const nums = [8,1,2,2,3];


const smallerNums = nums.map(v => nums.filter(n => n < v).length);


console.log(smallerNums); // [4,0,1,1,3]


或者,您可以在 reduce 中進(jìn)行計(jì)數(shù),這應(yīng)該會(huì)快得多:


const nums = [8, 1, 2, 2, 3];


const smallerNums = nums.map(v => nums.reduce((c, n) => c += (n < v), 0));


console.log(smallerNums); // [4,0,1,1,3]


查看完整回答
反對(duì) 回復(fù) 2023-01-06
?
皈依舞

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊

我喜歡:


function rankZero(array){

  const s = [...array], r = [];

  s.sort((a, b)=>{

    return a - b;

  });

  for(let n of array){

    r.push(s.indexOf(n));

  }

  return r;

}

console.log(rankZero([8, 1, 2, 2, 3]));


查看完整回答
反對(duì) 回復(fù) 2023-01-06
?
紅顏莎娜

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊

我對(duì)每個(gè)解決方案進(jìn)行了性能測(cè)試。在我的電腦上(Intel Core I9-9900,64GB RAM)@StackSlave 的解決方案一直是最快的,其次是其他排序解決方案、reduce 解決方案、基本迭代和過(guò)濾器。您可以在下面自己運(yùn)行測(cè)試:


const datalength = 1000;

const iterations = 100;


const getRandom = (min, max) => Math.random() * (max - min) + min;

const data = Array.from({

  length: datalength

}, () => getRandom(1, 100));


const mapper = arr => arr.map(i => arr.filter(n => n < i).length);


const sorter = nums => {

  const sorted = [...nums].sort();

  const result = nums.map((i) => {

    return sorted.findIndex(s => s === i);

  });

};


const iterator = arr => {

  const answer = [];

  for (let i = 0; i < arr.length; i++) {

    let count = 0;

    for (let j = 0; j < arr.length; j++) {

      if (arr[j] < arr[i]) {

        count++;

      }

    }

    answer.push(count);

  }

  return answer;

};


const rankZero = array => {

  const s = [...array],

    r = [];

  s.sort((a, b) => {

    return a - b;

  });

  for (let n of array) {

    r.push(s.indexOf(n));

  }

  return r;

}


const reducer = arr => arr.map(v => arr.reduce((c, n) => c += (n < v), 0));


let fns = {

  'iterator': iterator,

  'mapper': mapper,

  'sorter': sorter,

  'reducer': reducer,

  'rankZero': rankZero

}


for (let [name, fn] of Object.entries(fns)) {

  let total = 0;

  for (i = 0; i < iterations; i++) {

    let t0 = performance.now();

    fn(data);

    let t1 = performance.now();

    total += t1 - t0;

  }

  console.log(name, (total / iterations).toFixed(2));

}



查看完整回答
反對(duì) 回復(fù) 2023-01-06
  • 5 回答
  • 0 關(guān)注
  • 233 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)