å°ãåã«ãç§ã¯ãã倧èŠæš¡ã§å°æ¬ãããäŒç€Ÿã«ã€ã³ã¿ãã¥ãŒã«è¡ããŸããã ã€ã³ã¿ãã¥ãŒã¯ããŸããããç§ã¯ãããæ°ã«å
¥ã£ãŠãããŸããã ããããç¿æ¥ãå ±åäŒã®éçšã§ãã€ã³ã¿ãã¥ãŒäžã«å°ãªããšã1ã€ã®è³ªåã«å¯Ÿããçããééã£ãŠããããšãããããŸããã
質åïŒå€§éã®ããŒã¿ã®python dictã§ã®æ€çŽ¢ããã€ã³ããã¯ã¹ä»ãé
åã®ç¹°ãè¿ãåŠçãããéãã®ã¯ãªãã§ããïŒ
åçïŒdictã¯ããŒããã·ã¥ãä¿åããŸãã dictå€ã®ããŒãæ€çŽ¢ãããã³ã«ããŸããã®ããã·ã¥ãèšç®ãã次ã«ïŒçªç¶ïŒãã€ããªæ€çŽ¢ãå®è¡ããŸãã ãããã£ãŠãè€éãã¯OïŒlogïŒNïŒïŒã§ãïŒ
å®éãããã«ã¯ãã€ããªæ€çŽ¢ã¯ãããŸããã ãããŠãã¢ã«ãŽãªãºã ã®è€éãã¯OïŒlogïŒNïŒïŒã§ã¯ãªããAmortã§ãã OïŒ1ïŒ-python dictã¯ããã·ã¥ããŒãã«ãšåŒã°ããæ§é ã«åºã¥ããŠããããã
ééã£ãçãã®çç±ã¯ã
ç§ã®å¥œããªèšèªã®ã³ã¬ã¯ã·ã§ã³ã䜿ã£ãŠãäœåã®æ ¹åºã«ããæ§é ã培åºçã«ç 究ããããšãæ°ã«
ããªãã£ãããã§ã ã 確ãã«ãããã€ãã®ããç¥ãããŠããéçºè
ã®èª¿æ»ã«ãããšãããã¯ç§ã®åé¡ã§ããã ãã§ãªããå€ãã®äººããæ°ã«å
¥ãã®PLã§ã³ã¬ã¯ã·ã§ã³ãã©ã®ããã«æ©èœãããããèããŠããªãããšãããããŸããã ããããç§ãã¡ã¯ããããäžåºŠã§ã¯ãªãæ¯æ¥äœ¿çšããŠããŸãã ãã®èšäºã®ã¢ã€ãã¢ãçãŸããŸããã
èšäºå
ã®æ§é ã®åé¡ã«é¢ããããã€ãã®èšèã 䜿çšæžã¿æ
å ±ã®ãªã¹ãã«ãªã¹ããããŠãããœãŒã¹ã調ã¹ããšããã®èšäºã®åé¡ãã©ã®ãœãŒã¹ã®åé¡ã«ã察å¿ããŠããªãããšã«æ°ä»ãã§ãããïŒäžéšã®ãœãŒã¹ã§ã¯ãŸã£ãããããŸããïŒã ããã¯ãæ§é äœã䜿çšãããšããæèã§æ§é äœãæ€èšããæ¹ãé©åã ãšæãããããã§ãã ããšãã°ãPHP / Python / C ++ã®é£æ³é
åãŸãã¯.Net / Pythonã®ãªã¹ãã
è¡ããŸãããã
1.é
å-ã€ã³ããã¯ã¹ä»ãé
åã§ãã
é
åã¯ãåãã¿ã€ãã®èŠçŽ ã§æ§æãããåºå®ãµã€ãºã®ã³ã¬ã¯ã·ã§ã³ã§ãã
ã€ã³ã¿ãŒãã§ãŒã¹ïŒ
- get_element_atïŒiïŒïŒOïŒ1ïŒè€éã
- set_element_atïŒiãvalueïŒïŒOïŒ1ïŒè€éã
é
åå
ã®æ€çŽ¢ã¯ãã€ã³ããã¯ã¹=>è€éãOïŒNïŒã§èŠçŽ ããœãŒãããããšã«ããå®è¡ãããŸãã
ã¢ã€ãã ã®ã€ã³ããã¯ã¹ã¢ã¯ã»ã¹æéãäžå®ãªã®ã¯ãªãã§ããïŒ é
åã¯åãåã®èŠçŽ ã§æ§æããããµã€ãºãåºå®ãããŠãããã¡ã¢ãªã®é£ç¶é åã«é
眮ãããŠããŸã=>é
åã®jçªç®ã®èŠçŽ ãååŸããã«ã¯ãé
åã®å
é ãžã®ãã€ã³ã¿ãååŸããèŠçŽ ãµã€ãºã«ãã®ã€ã³ããã¯ã¹ãæããå€ãè¿œå ããã ãã§ãã ãã®åçŽãªèšç®ã®çµæã¯ãé
åã®ç®çã®èŠçŽ ã®ã¿ãæããŸãã
*aj = beginPointer + elementSize*j-1
äŸïŒ/++: int i_array[10];
java/C#: int[10] i_array;
Python: array.array
php: SplFixedArray
2.ãªã¹ãã
ãªã¹ãã¯ãä»»æã®ã¿ã€ãã®å¯å€é·ã®èŠçŽ ã®ãªã¹ãã§ãïŒã€ãŸãããªã¹ãã«èŠçŽ ãè¿œå ãããããã€ã§ãåé€ãããã§ããŸãïŒã ãã®ãªã¹ãã䜿çšãããšãã¢ã€ãã ãå埩åŠçããããã€ã³ããã¯ã¹ã§ã¢ã€ãã ãååŸããããã¢ã€ãã ãè¿œå ããã³åé€ãããã§ããŸãã ãªã¹ãã®å®è£
ã¯ç°ãªããäž»ãªãã®ã¯ïŒåäž/åæ¹åïŒãªã³ã¯ãªã¹ããšãã¯ã¿ãŒã§ãã å€å
žçãªãªã¹ãã¯ãçŽæ¥ããã³ã€ãã¬ãŒã¿ãä»ããŠãããæäœããæ©èœãæäŸããŸã;以äžã§äž¡æ¹ã®ã¯ã©ã¹ã®ã€ã³ã¿ãŒãã§ãŒã¹ãæ€èšããŸãã
ãªã¹ãã€ã³ã¿ãŒãã§ã€ã¹ïŒ- prependïŒitemïŒïŒãªã¹ãã®äžçªäžã«ã¢ã€ãã ãè¿œå ããŸãã
- appendïŒitemïŒïŒãªã¹ãã®æåŸã«ã¢ã€ãã ãè¿œå ããŸãã
- insert_afterïŒãªã¹ãå埩åãã¢ã€ãã ïŒïŒçŸåšã®ã¢ã€ãã ã®åŸã«ã¢ã€ãã ãè¿œå ããŸãã
- remove_firtsïŒïŒïŒæåã®èŠçŽ ãåé€ããŸãã
- remove_afterïŒãªã¹ãå埩åïŒïŒçŸåšã®ã¢ã€ãã ã®åŸã«ããã¢ã€ãã ãåé€ããŸãã
- is_emptyïŒïŒïŒãªã¹ãã¯ç©ºã§ãã
- get_sizeïŒïŒïŒãªã¹ãã®ãµã€ãºãè¿ããŸãã
- get_nthïŒnïŒïŒnçªç®ã®èŠçŽ ãè¿ããŸãã
- set_nthïŒnãvalueïŒïŒå€ãnçªç®ã®èŠçŽ ã«èšå®ããŸãã
ãªã¹ãã€ãã¬ãŒã¿ã€ã³ã¿ãŒãã§ã€ã¹ïŒ- get_valueïŒïŒïŒçŸåšã®èŠçŽ ã®å€ãååŸããŸãã
- set_valueïŒïŒïŒå€ãçŸåšã®èŠçŽ ã«èšå®ããŸãã
- move_nextïŒïŒïŒæ¬¡ã®ã¢ã€ãã ã«ç§»åããŸãã
- equalïŒãªã¹ãå埩åïŒïŒå¥ã®å埩åãåããªã¹ãé
ç®ãåç
§ããŠãããã©ããã確èªããŸãã
äžéšã®ïŒã»ãšãã©è§£éãããïŒããã°ã©ãã³ã°èšèªã§ã¯ããããã®2ã€ã®ã€ã³ã¿ãŒãã§ã€ã¹ããæ¥çãããã³ãããªãã³ã°ããããŠããããšã«æ³šæããŠãã ããã ããšãã°ãPythonã§ã¯ããªã¹ãåã®ãªããžã§ã¯ããå埩ã§ããŸãããã€ã³ããã¯ã¹ããçŽæ¥ã¢ã¯ã»ã¹ããããšã§ãªã¹ãããååŸããããšãã§ããŸãã
å®è£
ã®ãªã¹ãã«ç§»ããŸãããã
2.1åäžã®ãªã³ã¯ãªã¹ã
åæ¹åãªã³ã¯ãªã¹ãïŒåäžãªã³ã¯ãªã¹ãïŒã¯ãã³ã³ããã®ãã§ãŒã³ã§ãã åã³ã³ããã«ã¯ãèŠçŽ ãžã®ãªã³ã¯ãšæ¬¡ã®ã³ã³ãããžã®ãªã³ã¯ãå«ãŸããŠãããããåäžã®ãªã³ã¯ãªã¹ããåžžã«åã«é²ã¿ãçŸåšã®èŠçŽ ã®å€ãåžžã«ååŸã§ããŸãã ã³ã³ããã¯ã¡ã¢ãªå
ã«é
眮ããããšãã§ããŸã=>åçŽã«æ¥ç¶ããããªã¹ãã«æ°ããèŠçŽ ãè¿œå ããã®ã¯ç°¡åã§ãã
éçšã³ã¹ãïŒ- ä»å ïŒOïŒ1ïŒ
- insert_afterïŒOïŒ1ïŒ
- remove_first / remove_afterïŒOïŒ1ïŒ
- get_nth / set_nthïŒOïŒNïŒ
äŸïŒ/++: std::list //Bidirectional Linked List
Java: java.util.LinkedList
c#: System.Collection.Generic.LinkedList //Bidirectional Linked List
php: SplDoublyLinkedList // Bidirectional Linked List
åæ¹åãªã³ã¯ãªã¹ãã®è©³çŽ°ã¯èæ
®ããŸããããåæ¹åãªã³ã¯ãªã¹ããšåäžãªã³ã¯ãªã¹ãã®éãã¯ãã³ã³ããå
ã«æ¬¡ãžã®ãªã³ã¯ã ãã§ãªãåã®ã³ã³ãããžã®ãªã³ã¯ãããããšã§ããããã«ããããªã¹ãå
ãåæ¹ã ãã§ãªãåŸæ¹ã«ã移åã§ããŸãã
2.2ãã¯ãã«
Vectorã¯ãã€ã³ããã¯ã¹é
åã®æ¡åŒµã«ããListã®å®è£
ã§ãã
éçšã³ã¹ãïŒ- ä»å ïŒOïŒNïŒ
- è¿œå ïŒAmort.OïŒ1ïŒ
- insert_afterïŒOïŒNïŒ
- remove_first / remove_afterïŒOïŒ1ïŒ
- get_nth / set_nthïŒOïŒ1ïŒ
æããã«ããã¯ã¿ãŒã®äž»ãªå©ç¹ã¯ãéåžžã®ã€ã³ããã¯ã¹ä»ãé
åããç¶æ¿ãããã€ã³ããã¯ã¹ã«ããèŠçŽ ãžã®è¿
éãªã¢ã¯ã»ã¹ã§ãã Vectorã®å埩ãéåžžã«ç°¡åã§ããç¹å®ã®ã«ãŠã³ã¿ãŒã1ã€å¢ãããã€ã³ããã¯ã¹ã§ã¢ã¯ã»ã¹ããã ãã§ãã ãã ããèŠçŽ ãžã®ã¢ã¯ã»ã¹é床ãäžããã«ã¯ãèŠçŽ ãè¿œå ããæéãæ¯æãå¿
èŠããããŸãã Vector'aã®äžå€®ïŒæ¿å
¥åŸïŒã«èŠçŽ ãæ¿å
¥ããã«ã¯ãå埩åã®çŸåšäœçœ®ãšé
åã®æåŸã®éã«ãããã¹ãŠã®èŠçŽ ãã³ããŒããå¿
èŠããããŸãããã®çµæãå¹³åã¢ã¯ã»ã¹æéã¯OïŒNïŒã«ãªããŸãã é
åã®äžå€®ã®èŠçŽ ãåé€ããé
åã®å
é ã«èŠçŽ ãè¿œå ããããšã§ãåãã§ãã é
åã®æåŸã«èŠçŽ ãè¿œå ããããšã¯OïŒ1ïŒã§è¡ãããšãã§ããŸãããã§ããªãå ŽåããããŸã-åã³é
åãæ°ããé
åã«ã³ããŒããå¿
èŠãããå Žåããã¯ã¿ãŒã®æåŸã«èŠçŽ ãè¿œå ããããšã¯Amortã«ãã£ãŠè¡ãããŸãã OïŒ1ïŒã
äŸïŒ/++: std::vector
Java: java.util.ArrayList
C#: System.Collections.ArrayList, System.Collections.List
Python: list
3.é£æ³é
åïŒèŸæž/ãããïŒ
ããŒ=>å€ã®ãã¢ã®ã³ã¬ã¯ã·ã§ã³ã èŠçŽ ïŒå€ïŒã«ã¯ä»»æã®åãæå®ã§ããŸããéåžžãããŒã¯æåå/æŽæ°ã®ã¿ã§ãããå®è£
ã«ãã£ãŠã¯ãããŒãšããŠäœ¿çšã§ãããªããžã§ã¯ãã®ç¯å²ãåºããããšãã§ããŸãã é£æ³é
åã®ãµã€ãºã¯ãèŠçŽ ãè¿œå /åé€ããããšã§å€æŽã§ããŸãã
ã€ã³ã¿ãŒãã§ãŒã¹ïŒ- addïŒkeyãvalueïŒ-èŠçŽ ãè¿œå ããŸã
- reassignïŒkeyãvalueïŒ-èŠçŽ ã眮ãæãã
- deleteïŒããŒïŒ-ã¢ã€ãã ãåé€ããŸã
- ã«ãã¯ã¢ããïŒããŒïŒ-èŠçŽ ãèŠã€ãã
é£æ³é
åã«ã¯ãHashMapãšBinary Treeã®2ã€ã®äž»èŠãªå®è£
ããããŸãã
3.1ããã·ã¥ããŒãã«
ååããæšæž¬ã§ããããã«ãããã§ã¯ããã·ã¥ã䜿çšãããŸãã ããã·ã¥ããŒãã«ã®ä»çµã¿ã¯æ¬¡ã®ãšããã§ããããŒããã®ããã·ã¥å€ãã€ã³ããã¯ã¹ãšããŠæ©èœããåãã€ã³ããã¯ã¹ä»ãé
åã«åºã¥ããŠãããå€ã¯ããŒãšæ ŒçŽãããèŠçŽ ïŒãã±ããïŒãå«ããªããžã§ã¯ããžã®åç
§ã§ãã ã¢ã€ãã ãè¿œå ãããšããããã·ã¥é¢æ°ã¯ããŒããããã·ã¥ãèšç®ãã察å¿ããã€ã³ããã¯ã¹ãæã€é
åã»ã«ã«è¿œå ãããã¢ã€ãã ãžã®ãªã³ã¯ãä¿åããŸãã èŠçŽ ã«ã¢ã¯ã»ã¹ããã«ã¯ãåã³ããŒããããã·ã¥ãååŸããéåžžã®é
åãšåæ§ã«æ©èœããŠãèŠçŽ ãžã®ãªã³ã¯ãååŸããŸãã
奜å¥å¿readerçãªèªè
ã¯ããã®ç³å°¿ç
ã®å®æœã«ç¹æã®åé¡ã«æ°ä»ããããããŸããã
- ããŒããã®ããã·ã¥ããããšãã°1928132371827612ã«çããå Žåãããã¯é©åãªãµã€ãºã®é
åãå¿
èŠã§ããããšãæå³ããŸããïŒ ãããŠãèŠçŽ ã2ã€ãããªãå Žåã¯ã©ãã§ããããïŒ
- ãããã2ã€ã®ç°ãªãããŒããã®ããã·ã¥ãäžèŽãããã©ããªãã§ããããïŒ
ãããã®2ã€ã®åé¡ã¯é¢é£ããŠããŸãïŒå°æ°ã®èŠçŽ ãæ ŒçŽããå Žåãé·ãããã·ã¥ãèšç®ã§ããªãããšã¯æããã§ã-ããã·ã¥é¢æ°ã¯é垞次ã®ããã«ãªããããäžåœãªã¡ã¢ãªã³ã¹ããçºçããŸãã
index = f(key, arrayLength)
ã€ãŸããããŒå€ã«å ããŠãé
åã®çŸåšã®ãµã€ãºãåãåããŸããããã¯ãããã·ã¥ã®é·ãã決å®ããããã«å¿
èŠã§ãã3ã€ã®èŠçŽ ã®ã¿ãæ ŒçŽããå Žåãé·ã32ãããã®ããã·ã¥ãäœæããŠãæå³ããããŸããã ããã·ã¥é¢æ°ã®ãã®åäœã®è£åŽã¯ãè¡çªã®å¯èœæ§ã§ãã è¡çªã¯å®éã«ã¯ããã·ã¥ããŒãã«ã®ç¹åŸŽã§ãããè¡çªã解決ããã«ã¯2ã€ã®æ¹æ³ããããŸãã
é£éïŒé
åHã®åã»ã«ã¯ãããŒã®åãããã·ã¥å€ã«å¯Ÿå¿ããããŒãšå€ã®ãã¢ã®ãªã³ã¯ãªã¹ãïŒãã§ãŒã³ïŒãžã®ãã€ã³ã¿ãŒã§ãã è¡çªã¯ãåçŽã«1èŠçŽ ãããé·ããã§ãŒã³ã®åºçŸã«ã€ãªãããŸãã
ãªãŒãã³ã¢ãã¬ã¹æå®ïŒé
åHã¯ãããŒãšå€ã®ãã¢èªäœãä¿åããŸãã èŠçŽ æ¿å
¥ã¢ã«ãŽãªãºã ã¯ãæ°ããèŠçŽ ãæžã蟌ãŸããæåã®ç©ºãã»ã«ãèŠã€ãããŸã§ãããé åºã§é
åHã®ã»ã«ããã§ãã¯ããŸãã ãã®é åºã¯ãªã³ã¶ãã©ã€ã§èšç®ããããã§ãŒã³ãæã€ããã·ã¥ããŒãã«ã«å¿
èŠãªãã€ã³ã¿ãŒã®ã¡ã¢ãªãç¯çŽããŸãã
éçšã³ã¹ãïŒ- è¿œå ïŒAmort.OïŒ1ïŒ/ OïŒNïŒ
- å眲åïŒAmort.OïŒ1ïŒ/ OïŒNïŒ
- åé€ïŒAmort.OïŒ1ïŒ/ OïŒNïŒ
- ã«ãã¯ã¢ããïŒAmort.OïŒ1ïŒ/ OïŒNïŒ
ããã§ãæåã®å€ã¯å¹³åè€é床ã2çªç®ã¯ææªã®å Žåã®æäœã®è€é床ã§ãã ãã®éãã®åå ã¯æ¬¡ã®ãšããã§ããèŠçŽ ãè¿œå ãããšãã«ãé
åããã£ã±ãã®å Žåãããã·ã¥ããŒãã«å
šäœãåæ§ç¯ããå¿
èŠãããå ŽåããããŸãã èŠçŽ ãæ€çŽ¢ãããšãè¡çªã®é·ãé£éã«åºãããããšãå€æããå ŽåããããŸãããŸãããã¹ãŠã®èŠçŽ ããœãŒãããå¿
èŠããããŸãã
äŸïŒc++: QHash boost::unordered_map/boost::unordered_set (by NickLion )
java: java.util.HashMap<K,V>
c#: System.Collections.Hashtable, System.Collections.Dictionary<K, V>
python: dict
php: array()
3.2ãã€ããªããªãŒ
å®éã«ã¯ããã€ããªããªãŒã ãã§ãªããèªå·±ãã©ã³ã¹åãã€ããªããªãŒããããŸãã ããã«ãé£æ³é
åãå®è£
ããããã«äœ¿çšã§ããããã€ãã®ç°ãªãããªãŒãããããšã«æ³šæããå¿
èŠããããŸãïŒèµ€é»ããªãŒãAVLããªãŒãªã©ã ãããã®ããªãŒã¯ããããå¥ã®èšäºããŸãã¯è€æ°ã®ãããã¯ïŒããããéåžžã«æ
éã«ããªãŒãç 究ããå ŽåïŒã®ãããã¯ã§ããããããããã®åããªãŒã詳现ã«æ€èšããããšã¯ããŸããã äžè¬çãªååã®ã¿ã説æããŸãã
å®çŸ©ïŒãã€ããªããªãŒ-åããŒãã2ã€ä»¥äžã®åå«ïŒåïŒãæã€ããªãŒç¶ã®ããŒã¿æ§é ã ååãšããŠãæåã®ããŒãã¯èŠªããŒããšåŒã°ããåã¯å·Šãšå³ã®çžç¶äººãšåŒã°ããŸãã ããŒãã«åå«ããªãå ŽåããªãŒãããŒããšåŒã°ããŸãã
ããšãã°ããã€ããªæ€çŽ¢ããªãŒãèŠãŠã¿ãŸããããåããŒãã¯ã3ã€ã®èŠçŽ ãå«ãã³ã³ããã§ããããŒã¿-å®éã«æ·»ä»ãããããŒã¿ïŒããŒã¿ã«ã¯èŠçŽ èªäœãšããŒå€ã®äž¡æ¹ãå«ãŸããŸãïŒãå·Š-åºã«ãªãå·ŠããŒããšå³ãžã®ãªã³ã¯-é©åãªåºã«ãªãããŒããžã®ãªã³ã¯ã ãã®å Žåã次ã®ã«ãŒã«ãæºããããŸãïŒããŒ[å·Š[X]] <ããŒ[X]â€ããŒ[å³[X]]-ã€ãŸãã芪ããŒãã®ããŒã¿ããŒã¯å·Šæ¯åã®ããŒã¿ããŒãã倧ãããå³æ¯åã®ããŒã¿ããŒãããç·©ããã«å°ããã§ãã èŠçŽ ãæ€çŽ¢ãããšããããŒã®å€ãçŸåšã®ããŒãã®ããŒãšæ¯èŒãããã³ã«ããªãŒãäžåšããæ¯èŒã®çµæã«åºã¥ããŠãã©ã®æ¹åã«é²ãã¹ããã決å®ããŸãã ãã®ãããªæ€çŽ¢ã®è€éãã¯å®å®ããŠOïŒlogNïŒã§ããããšãèšç®ããã®ã¯ç°¡åã§ãã æ°ããããŒããè¿œå ãããšããæ°ããèŠçŽ ãã©ãã«è²Œãä»ããããèŠã€ãããŸã§ãäžè¬çã«åæ§ã®æé ãå®è¡ããŸãã 確ãã«ããã®ãããªããªãŒã¯ãŸã ãã©ã³ã¹ãåãå¿
èŠãããããšã«æ³šæããå¿
èŠããããŸãããããã¯æ¢ã«çç¥ããŸãã 奜å¥å¿readerçãªèªè
ã¯ããœãŒã¹ã®ãªã¹ãã調ã¹ãŠå¿
èŠãªæ
å ±ãèŠã€ããŸãã
éçšã³ã¹ãïŒ- è¿œå ïŒAmort.OïŒlgNïŒ
- å眲åïŒAmort.OïŒlgNïŒ
- åé€ïŒAmort.OïŒlgNïŒ
- ã«ãã¯ã¢ããïŒAmort.OïŒlgNïŒ
äŸïŒc++: std::map, std::set
java: java.util.TreeMap<K,V>, java.util.Map<K,V> -
c#: :( SortedDictionary(by NickLion )
python: -
php: -
4.ã»ããã
èŠçŽ ã®äžå€ã®ã»ããã ã»ããã¯äžåºŠã ãå®çŸ©ãããŸã-äœææã«ããã®åŸèŠçŽ ãžã®èªã¿åãå°çšã¢ã¯ã»ã¹ãæäŸããŸãã ã»ããããèŠçŽ ãåé€ããããã»ããã®èŠçŽ ãå€æŽãããããããšãäžå¯èœã§ããããã«ãã»ãããå±éããããšã¯ã§ããŸããã ãã®ã³ã¬ã¯ã·ã§ã³ãå®è£
ããããã®ããŒã¹ãšããŠãéåžžããã·ã¥ããŒãã«ã䜿çšãããŸããããã·ã¥ããŒãã«ã®èª¬æã¯äžèšã«ãããŸãã
ã»ããã¯ãåã«æ°åŠçãªã»ããã®æœè±¡åã®å®è£
ã§ãã äžæã®åºå¥å¯èœãªèŠçŽ ã®ã»ããã ïŒ
ATP DanilI ïŒ
äŸïŒc++: std::set
java: java.util.Set
C#: System.Collections.HashSet
python: set/frozenset
ããŒã¿æ§é ã®æ¯èŒç¹æ§ïŒããŸããŸãªããã°ã©ãã³ã°èšèªã®ããŒã¿æ§é ïŒåç
§ïŒ
ããŒã¿æ§é ïŒenïŒããŒã¿æ§é ïŒrusïŒãã€ããªæ€çŽ¢ããªãŒïŒenïŒãã€ããªæ€çŽ¢ããªãŒïŒrusïŒãŸããèè
ã¯PHPã®
ãœãŒã¹ã³ãŒããèŠãŠã
STLã®
ããã¯ãèªã¿ãŸããã
æŽæ°ããŸããã ã¯ããpythonã«ã¯éåžžã®ã€ã³ããã¯ã¹ä»ãé
åïŒarray.arrayïŒããããŸãã ãšã³ãã£ã³ãããŒã«æè¬ããŸãã ä¿®æ£ãããããã«ãåã¯å¿
ãããæ°å€ã§ã¯ãªããåãæå®ã§ããŸãã
æŽæ°ããŸããã ããã¹ãã§è¡ãããå€ãã®ä¿®æ£ã
idemura ã
zibada ã
tzlom ã
SiGMan ã
freeOne ã
Slaffko ã
korvindest ã
Laplace ãç·šéè
ãç·šéè
ã«æè¬ïŒ
æŽæ°ããŸããããžããã®ã³ã¡ã³ãããïŒ
ã¯ããMapã€ãã¬ãŒã·ã§ã³ã®èª¬æããªããšããçç±ã ãã§ãããã·ã¥ããããšãã«ããªãŒãå¿
èŠã§ãããšæãããçç±ã¯ãèšäºããã¯äžè¬ã«æ確ã§ã¯ãããŸããã ïŒOïŒlogNïŒvs OïŒ1ïŒïŒã
ãã®å ŽåããããïŒãŸãã¯ã»ããïŒèŠçŽ ããªã¹ãããããšãã§ããŸãã
-ä¿èšŒãããŠããªãé åºïŒHashMapãäžéšã®ã¹ã¯ãªããèšèªã®çµã¿èŸŒã¿ããã·ã¥ïŒã
-è¿œå ããé ã«ïŒLinkedHashMapãä»ã®ã¹ã¯ãªããèšèªã®çµã¿èŸŒã¿ããã·ã¥ïŒ;
-ããŒã®æé +ç¹å®ã®ç¯å²å
ã®ããŒã®ã¿ãå埩åŠçããæ©èœã
ãã ããåŸè
ã®å ŽåãããªãŒã«ä»£ãããã®ã¯ãåå€æŽåŸãŸãã¯ãªã¯ãšã¹ãã®åã«ã³ã¬ã¯ã·ã§ã³å
šäœãå®å
šã«ãœãŒãããããšã§ãã
ããã¯å€§ããªã³ã¬ã¯ã·ã§ã³ã§ã¯é·ããŠæ²ããã§ãããå°ããªã³ã¬ã¯ã·ã§ã³ã§ã¯æ©èœããŸãããããã£ãŠãããªãŒã¯ã¹ã¯ãªããèšèªã«ç¹ã«åã蟌ãŸããŠããŸããã