Այս շաբաթվա ընթացքում ես միավորվել եմ մի խումբ մշակողների հետ՝ լուծելու Leetcode-ի խնդիրները և պարզելու ամենաօպտիմալ եղանակը և հաշվարկելու ավելի կարճ գործարկման ժամանակը:

Առաջինի համար տաքացումը հեշտ խնդիր էր. https://leetcode.com/problems/contains-duplicate/

Խնդիր 217. հաշվի առնելով ամբողջ թվերի զանգվածը, գտեք, արդյոք զանգվածը կրկնօրինակներ է պարունակում: Ձեր ֆունկցիան պետք է վերադարձնի true, եթե որևէ արժեք հայտնվի զանգվածում առնվազն երկու անգամ, և այն պետք է վերադարձնի false, եթե յուրաքանչյուր տարր տարբեր է:

Օրինակ 1.

Input: [1,2,3,1]
Output: true

Օրինակ 2.

Input: [1,2,3,4]
Output: false

Խնդիրը սկսելու համար ես պետք է վերլուծեմ մուտքերն ու ելքերը, թե ինչ է այն լինելու իմ կարծիքով: Մուտքը միշտ կլինի ամբողջ թվերի զանգված, իսկ ելքը՝ բուլյան true կամ false: Իմ ենթադրությունն էր օգտագործել Set-ը: Այն, ինչ անում է Set-ը Javascript-ում, այն է, որ օբյեկտ է ստեղծում ցանկացած տեսակի եզակի արժեքներ պահելու համար: Քանի որ Set օբյեկտի օգտագործումը կնվազեցնի կրկնօրինակների քանակը, օբյեկտի չափը կտարբերվի սկզբնական զանգվածի երկարությունից, եթե կան կրկնօրինակներ: Սա այն լուծումն է, որով ես եկել եմ, որը չունի «for loops»:

Լուծում.

Երկրորդ խնդրի համար, որը մենք արեցինք, այն ներառում է արժեքի տեղադրում երկուական որոնման ծառի մեջ: https://leetcode.com/problems/insert-into-a-binary-search-tree/

Խնդիր 701. Տեղադրեք երկուական որոնման ծառի մեջ

Մենք ունենք երկուական որոնման ծառի արմատային հանգույց (BST) և արժեք, որը պետք է տեղադրվի ծառի մեջ: Մուտքերը արմատ և արժեք են: Այս խնդրին իմ մոտեցումն այն է, որ մի քանի if else հայտարարություններ անել և օգտագործել ռեկուրսիվ ֆունկցիա՝ արժեքը ճիշտ տեղում տեղադրելու համար: if դրույթի համար, եթե արմատ չկա, արմատը կստեղծի նոր TreeNode արժեքով, և արմատը կվերադարձվի: Հաջորդ if օղակի համար մենք հաշվում ենք, եթե արմատի արժեքը արժեքից մեծ է: Եթե ​​դա ճշմարիտ է, ապա արմատի ձախ արժեքը սահմանվում է հավասար այն արդյունքին, որը դուրս է գալիս insertIntoBST ռեկուրսիվ ֆունկցիայից, որն անցնում է ձախ արմատի մեջ և արժեքը: Մնացածը կլիներ արմատի աջի համար։

Լուծում.

Միջին երկուական որոնման ծառ կատարելուց հետո ես հասկացա, թե ինչպես կարելի է ավելի լավ օգտագործել ռեկուրսիվ ֆունկցիաները այս սցենարում: