最簡潔SparseArray介紹

2021-08-21 07:38:01 字數 955 閱讀 8314

一、全文概括

1、sparsearray資料結構

2、資料插入以及取出過程

3、常見問題

二、sparsearray資料結構

1、由兩個陣列組成,乙個用於儲存key,乙個用於儲存value。儲存key的陣列為int型,儲存value的陣列為物件型別

2、key在陣列中的index就是value在相應陣列中的index

三、資料的插入以及取出過程

1、資料的插入文字描述

1.1、根據利用二分查詢是否有對應的key值,若有返回大於0的index,替換value陣列中相應index的值

1.2、沒有找到則返回小於0的index.將index取反變為正數,檢視value陣列對應index的狀態是否為刪除狀態。若為刪除狀態。則把key存在key陣列index位上,把value存在value陣列index位上。

1.3、如果不為刪除狀態,則判斷是否需要**(remove和delete方法都是改變相應位置的狀態);如果需要進行**,然後重新計算index;

1.4、插入資料,先判斷需不需擴容,如果不需要則將key陣列和value陣列index及之後的資料往後移一位,將index對應的key和value插入

1.5、如果需要擴容(小於等於4,則返回8, 否則返回當前size的兩倍)然後把index之前的資料考入,把index對應的key和value插入,把index後面的資料拷入

2、資料插入流程圖

sparsearray插入過程.png

3.獲取資料過程

利用二分查詢找到key相應的index 然後獲取value值

四、常見問題

1、有一堆數從中選兩個數相加等於10;

常規的解決方法:暴力解決需要兩個for迴圈

把數存入sparsearray

最簡潔HashMap介紹

一 全文介紹 1 hashmap資料結構介紹 2 資料的插入過程以及查詢過程 3 hashmap初始大小計算以及重要屬性介紹 4 常會被問到的問題。二 hashmap資料結構 hashmap是由陣列和鍊錶結構組成。這種結構有兩個好處 1 查詢比純鍊錶快,插入刪除比純陣列快 2 可以解決hashcod...

最簡潔條件判斷寫法

def islen strstring if len strstring 6 return true else return false在python3中有辦法只用一行完成函式 def islen strstring return true if len strstring 6 else false...

NodeJS Promoise 機制最簡單介紹

nodejs的promise機制是為了解決js執行過程中的非同步問題,或者說,有時候我們希望程式 是順序執行的。先來看看下面這段 的執行結果 var fs require fs var res fs.readfile c foo.txt function error,data console.log...