亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JS算法題之查找數字在數組中的索引位置

2019-11-19 11:34:04
字體:
來源:轉載
供稿:網友

前言

編寫算法時,排序是一個非常重要的概念。它有各種各樣的種類:冒泡排序、希爾排序、分塊塊排序,梳排序,雞尾酒排序,侏儒排序 ―― 這些可不是我瞎編的!

這個算法題能夠讓我們一睹精彩的世界。我們必須對數字數組進行升序排序,并找出給定數字在該數組中的位置。

算法說明

將值(第二個參數)插入到數組(第一個參數)中,并返回其在排序后的數組中的最低索引。返回的值應該是一個數字。
例如 getIndexToIns([1,2,3,4], 1.5) 應該返回 1,因為 1.5 大于 1(索引0),但小于 2(索引1)。

同樣,getIndexToIns([20,3,5], 19) 應該返回 2,因為數組排序后應該是 [3,5,20] , 19 小于 20 (索引2)且大于 5(索引1)。

function getIndexToIns(arr, num) { return num;}getIndexToIns([40, 60], 50);

本算法題原題

測試用例

  • getIndexToIns([10, 20, 30, 40, 50], 35) 應該返回一個數字 3。
  • getIndexToIns([10, 20, 30, 40, 50], 30) 應該返回一個數字 2.
  • getIndexToIns([40, 60], 50) 應該返回一個數字 1.
  • getIndexToIns([3, 10, 5], 3) 應該返回一個數字 0.
  • getIndexToIns([5, 3, 20, 3], 5) 應該返回一個數字 2.
  • getIndexToIns([2, 20, 10], 19) 應該返回一個數字 2.
  • getIndexToIns([2, 5, 10], 15) 應該返回一個數字 3.
  • getIndexToIns([], 1) 應該返回一個數字 0.

解決方案#1:.sort(),. indexOf()

PEDAC

理解問題:有兩個輸入:一個數組和一個數字。我們的目標是將輸入的數字在輸入數組后中排序后,再返回它的索引。
示例/測試用例:我們不知道輸入的數組是以哪種方式排序的,但是提供的測試用例清楚地表明,輸入的數組應該從小到大進行排序。

請注意,在最后一個測試用例中存在邊界問題,其中輸入數組是一個空數組。

數據結構:由于我們最終將會返回索引,因此應該堅持使用數組。

我們將會用一個名為 .indexOf() 的方法:

.indexOf() 返回元素在數組中出現的第一個索引,如果元素根本不存在則返回 -1。例如:

let food = ['pizza', 'ice cream', 'chips', 'hot dog', 'cake']food.indexOf('chips')// returns 2food.indexOf('spaghetti')// returns -1

我們將使用 .concat() 而不是 .push()。為什么呢?因為當使用 .push() 向數組添加元素時,它會返回新數組的長度。而使用 .concat() 向數組添加元素時,它會返回新數組本身。例如:

let array = [4, 10, 20, 37, 45]array.push(98)// returns 6array.concat(98)// returns [4, 10, 20, 37, 45, 98]

算法:

  1. 將num 插入 arr。
  2. 將 arr 進行升序排序。
  3. 返回 num 的索引。

代碼:

function getIndexToIns(arr, num) { // Insert num into arr, creating a new array.  let newArray = arr.concat(num) //    [40, 60].concat(50) //    [40, 60, 50] // Sort the new array from least to greatest.  newArray.sort((a, b) => a - b) // [40, 60, 50].sort((a, b) => a - b) // [40, 50, 60] // Return the index of num which is now // in the correct place in the new array.  return newArray.indexOf(num); // return [40, 50, 60].indexOf(50) // 1}getIndexToIns([40, 60], 50);

去掉局部變量和注釋后的代碼:

function getIndexToIns(arr, num) { return arr.concat(num).sort((a, b) => a - b).indexOf(num);}getIndexToIns([40, 60], 50);

解決方案#2:.sort(),.findIndex()

PEDAC

理解問題:有兩個輸入:一個數組和一個數字。我們的目標是將輸入的數字在輸入數組后中排序后,再返回它的索引。
示例/測試用例:我們不知道輸入的數組是以哪種方式排序的,但是提供的測試用例清楚地表明,輸入的數組應該從小到大進行排序。

這個解決方案需要考慮兩個邊界情況:

  • 如果輸入數組為空,則我們需要返回 0,因為 num 將是該數組中的唯一元素,所以它在索引為 0 的位置。
  • 如果 num 的位置處于升序排序后的 arr 的末尾,那么我們需要返回 arr 的長度。

數據結構:由于我們最終將會返回索引,因此應該堅持使用數組。

讓我們看看.findIndex() 并了解它將如何幫助解決這一挑戰:

.findIndex() 返回數組中第一個滿足條件的元素索引。否則它將返回 -1,這表示沒有元素通過測試。例如:

let numbers = [3, 17, 94, 15, 20]numbers.findIndex((currentNum) => currentNum % 2 == 0)// returns 2numbers.findIndex((currentNum) => currentNum > 100)// returns -1

這對我們很有用,因為我們可以用 .findIndex() 將輸入 num 與輸入 arr 中的每個數字進行比較,并找出它從最小到最大的順序。

算法:

  1. 如果 arr 是一個空數組,則返回 0。
  2. 如果 num 處于排序后數組的末尾,則返回 arr 的長度。
  3. 否則,返回索引 num。

代碼:

function getIndexToIns(arr, num) { // Sort arr from least to greatest. let sortedArray = arr.sort((a, b) => a - b) //     [40, 60].sort((a, b) => a - b) //     [40, 60] // Compare num to each number in sortedArray // and find the index where num is less than or equal to  // a number in sortedArray. let index = sortedArray.findIndex((currentNum) => num <= currentNum) //   [40, 60].findIndex(40 => 50 <= 40) --> falsy //   [40, 60].findIndex(60 => 50 <= 60) --> truthy //   returns 1 because num would fit like so [40, 50, 60] // Return the correct index of num. // If num belongs at the end of sortedArray or if arr is empty  // return the length of arr. return index === -1 ? arr.length : index}getIndexToIns([40, 60], 50);

去掉局部變量和注釋的代碼:

function getIndexToIns(arr, num) { let index = arr.sort((a, b) => a - b).findIndex((currentNum) => num <= currentNum) return index === -1 ? arr.length : index}getIndexToIns([40, 60], 50);

如果你有其他解決方案或建議,請在評論中分享!

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品成人国产在线观看男人呻吟| 日韩电影中文字幕在线观看| 亚洲男人的天堂在线| 久久精品国产视频| 亚洲激情在线观看视频免费| 欧美在线视频一区| 国产精品免费久久久久久| 亚洲天堂免费在线| 丝袜美腿精品国产二区| 91av视频在线播放| 亚洲free性xxxx护士hd| 亚洲国产日韩精品在线| 国产日本欧美一区二区三区| 国产精品老牛影院在线观看| 亚洲国产三级网| 亚洲午夜色婷婷在线| 另类专区欧美制服同性| 色吧影院999| 精品久久久久久久久中文字幕| 日韩电影免费观看在线| 国外色69视频在线观看| 欧美成人午夜激情视频| 成人中文字幕+乱码+中文字幕| 亚洲欧美中文日韩在线v日本| 久久色免费在线视频| 日韩在线观看免费全集电视剧网站| 国产伊人精品在线| 欧美午夜精品伦理| 亚洲国产精品va在看黑人| 亚洲综合国产精品| xvideos亚洲人网站| 欧美在线观看日本一区| 日韩亚洲欧美成人| 国产日韩av在线播放| 欧美日韩一区二区在线播放| 亚洲黄页视频免费观看| 国产视频欧美视频| 国产精品黄色影片导航在线观看| 精品国产一区二区三区四区在线观看| 精品久久久久久亚洲精品| 精品国产91乱高清在线观看| 欧美资源在线观看| 精品视频偷偷看在线观看| 国产精品成人aaaaa网站| 全球成人中文在线| 成人激情视频在线| 亚洲激情小视频| 国产欧洲精品视频| 最近2019中文字幕大全第二页| 7m第一福利500精品视频| 国产精品久久久久91| 欧美性xxxx极品高清hd直播| 日韩欧美一区二区三区久久| 中文字幕日本欧美| 91精品国产免费久久久久久| 91精品久久久久久久久中文字幕| 亚洲bt天天射| 日韩av电影中文字幕| 国产精品video| 久热国产精品视频| 日韩av在线影视| www.久久草.com| 亚洲精品一区在线观看香蕉| 国产精品亚发布| 欧美激情一区二区三区高清视频| 97成人精品区在线播放| 久久亚洲电影天堂| 色哟哟亚洲精品一区二区| 亚洲自拍偷拍色图| 久久综合伊人77777蜜臀| 国产精品狼人色视频一区| 欧美在线视频一区| 另类天堂视频在线观看| 欧美亚洲国产成人精品| 色综合久久中文字幕综合网小说| 欧美极品美女视频网站在线观看免费| 欧美激情精品久久久久久黑人| 欧美一级淫片videoshd| 久久久精品电影| 久久精品99国产精品酒店日本| 国产欧美日韩精品丝袜高跟鞋| 性欧美xxxx| 欧美精品精品精品精品免费| 国产精品久久久久久亚洲影视| 日韩欧美中文字幕在线观看| 亚洲欧美国产一区二区三区| 国产精品视频色| 欧美激情中文字幕乱码免费| 亚洲激情国产精品| 欧美成人精品不卡视频在线观看| 久久久av一区| 久久久久久久亚洲精品| 亚洲精品日韩av| 乱亲女秽乱长久久久| 欧美激情高清视频| www国产精品视频| 欧美裸体视频网站| 国产欧美韩国高清| 国产成人一区二区三区小说| 777国产偷窥盗摄精品视频| 最近2019中文字幕大全第二页| 亚洲第一黄色网| 国产精品高潮粉嫩av| 久久天天躁狠狠躁夜夜躁2014| 欧美二区在线播放| 日韩一区在线视频| 亚洲人成电影在线播放| 91网在线免费观看| 日本成人激情视频| 97在线观看免费高清| 欧美激情欧美激情| 97视频com| 一区二区三区在线播放欧美| 91精品久久久久久久久久久久久久| 精品香蕉一区二区三区| 久久青草福利网站| 色中色综合影院手机版在线观看| 精品一区二区三区电影| 国产999精品视频| 亚洲国产精彩中文乱码av在线播放| 亚洲国产小视频| 日韩电影中文字幕在线| 欧美视频在线观看免费| 欧美日韩国产精品一区二区三区四区| 91手机视频在线观看| 色天天综合狠狠色| 亚洲电影av在线| 亚洲国产精品女人久久久| 成人在线播放av| 国产第一区电影| 久久精品99久久久香蕉| 日韩欧美精品免费在线| 久久夜色精品国产欧美乱| 欧美在线视频在线播放完整版免费观看| 亚洲第一精品夜夜躁人人爽| 久久综合国产精品台湾中文娱乐网| 国产精品6699| 国产69久久精品成人| 久久6免费高清热精品| 一本色道久久88综合日韩精品| 欧美成人免费在线观看| 最近的2019中文字幕免费一页| 亚洲精品91美女久久久久久久| 96国产粉嫩美女| 97视频免费观看| 日韩av中文字幕在线播放| 国产成人a亚洲精品| 亚洲色图欧美制服丝袜另类第一页| 欧美黄色片在线观看| 国产精品久久久av| 亚洲色图第三页| 一区二区亚洲精品国产| 中文字幕国产亚洲2019| 亚洲国产精品99久久| 国产一区二区美女视频| 久久天堂av综合合色| 欧美一区二区三区艳史| 在线成人激情黄色| 国产精品久久久久久久久久东京| 尤物yw午夜国产精品视频| 亚洲视频在线观看网站| 亚洲欧美一区二区精品久久久| 国产精品久久久久影院日本| 国产欧美最新羞羞视频在线观看|