Leetcode with dani
1.29K subscribers
202 photos
14 videos
56 files
243 links
Join us and let's tackle leet code questions together: improve your problem-solving skills
Preparing for coding interviews
learning new algorithms and data structures
connect with other coding enthusiasts
Download Telegram
How many of you know about the binary search algorithm?
Anonymous Poll
57%
yess โœ‹
43%
nooo๐Ÿ˜…
This media is not supported in your browser
VIEW IN TELEGRAM
Binary Search Algorithm in 100 Seconds
๐Ÿ‘3
we will try to solve some problems on binary search so be ready.๐Ÿฅถ
๐Ÿซก4๐Ÿ‘1
This media is not supported in your browser
VIEW IN TELEGRAM
Binary search in 4 minutes
๐Ÿ‘5๐Ÿ”ฅ1
704. Binary Search #Easy #leet_code_Q5 #binary_search Given an array of integers nums which is sorted in ascending order, and an integer target, write a function to search target in nums. If target exists, then return its index. Otherwise, return -1.

You must write an algorithm with O(log n) runtime complexity.

Example 1:

Input: nums = [-1,0,3,5,9,12], target = 9
Output: 4
Explanation: 9 exists in nums and its index is 4
Example 2:

Input: nums = [-1,0,3,5,9,12], target = 2
Output: -1
Explanation: 2 does not exist in nums so return -1
๐Ÿ‘5
Leetcode with dani
704. Binary Search #Easy #leet_code_Q5 #binary_search Given an array of integers nums which is sorted in ascending order, and an integer target, write a function to search target in nums. If target exists, then return its index. Otherwise, return -1. Youโ€ฆ
``` class Solution:
def search(self, nums: List[int], target: int) -> int:
left = 0
right = len(nums)-1
while(left<=right):
mid = (left+right)//2
if nums[mid] == target:
return mid
elif nums[mid] >target:
right = mid -1
else:
left = mid+1
return -1
```
๐Ÿ‘5
744. find the smallest that greater than the target letter #binary_search #leet_code_Q6 #Easy You are given an array of characters letters that is sorted in non-decreasing order, and a character target. There are at least two different characters in letters.

Return the smallest character in letters that is lexicographically greater than target. If such a character does not exist, return the first character in letters.
Example 1:

Input: letters = ["c","f","j"], target = "a"
Output: "c"
Explanation: The smallest character that is lexicographically greater than 'a' in letters is 'c'.
Example 2:

Input: letters = ["c","f","j"], target = "c"
Output: "f"
Explanation: The smallest character that is lexicographically greater than 'c' in letters is 'f'.
Example 3:

Input: letters = ["x","x","y","y"], target = "z"
Output: "x"
Explanation: There are no characters in letters that is lexicographically greater than 'z' so we return letters[0]
Constraints:

2 <= letters.length <= 104
letters[i] is a lowercase English letter.
letters is sorted in non-decreasing order.
letters contains at least two different characters.
target is a lowercase English letter.
๐Ÿ‘4
answer:
class Solution:
def nextGreatestLetter(self, letters: List[str], target: str) -> str:
left = 0
right = len(letters)-1
while(left<=right):
mid = (left+right)//2
if(letters[mid] > target )and (letters[mid-1] <= target or mid==left):
return letters[mid]
elif letters[mid] > target:
right = mid -1
else:
left = mid +1
return letters[0]
๐Ÿ‘5โ˜ƒ2
let's submit our answer:
it's 91% faster.๐Ÿ˜Ž
๐Ÿ‘5๐Ÿ‘1
แ‹จแˆ›แ‰ฅแ‹ต แ‰ขแˆ˜แˆตแˆˆแŠ แฃ แ‹ตแŠ•แŒˆแ‰ต แŠ แŠ•แ‰บแŠ• แˆณแŒฃ
แŠ แˆจแ‰„ แ‰คแ‰ต แˆ”แŒ„ แฃ แŠ แˆจแ‰„ แˆตแŒ แŒฃ
แŠ แŠ•แ‹ต แŒแŒฅแˆ แˆฐแˆ›แˆ
แแ‰…แˆญแˆฝแŠ• แŠจแˆแ‰ค แฃ แАแ‰…แˆŽ แ‹จแˆšแ‹ซแ‹ˆแŒฃแกแก
แ‹ซแ‹แˆ แˆ˜แŠ•แŒˆแ‹ต แ‰ แˆšแˆ...
แˆˆแˆ˜แŠ•แŒˆแ‹ฐแŠ› แˆฐแ‹ แฃ แˆฐแŠซแˆซแˆ แ‹จแƒแˆแ‹
แŠฅแ‹› แŒ‹ แ‰แŒญ แ‰ฅแˆŽ...
"แŠจแ‹ณแ‰ฝแŠ" แŠฅแ‹ซแˆˆ แฃ แ‹จแˆšแˆˆแˆแˆแˆแ‹
แˆ˜แŠ•แŒˆแ‹ต แ‹จแˆšแˆ แŒแŒฅแˆ™ แฃแŒ†แˆฎแ‹ฌแŠ• แŒˆแˆจแˆแ‹แกแก
แŒ†แˆฎแ‹ฌ แˆฒแŒˆแˆจแ แฃ
แŒ แ‰ฃแˆณ แŒฃแˆˆแ‰ฅแŠ แฃ แŒแŒฅแˆ™แŠ• แŠฅแŠ•แ‹ณแˆแˆจแˆณ
"แˆ˜แŠ•แŒˆแ‹ต แŠ แ‹ซแ‹ฐแˆญแˆตแˆ
แˆ˜แŠ•แŒˆแ‹ต แŠ แ‹ญแˆ˜แˆแˆตแˆ แฃ แŠฅแŒแˆญ แŠซแˆแ‰ฐแАแˆณ!!!"
แŠฅแ‹ซแˆˆ แ‹ญแŒˆแŒฅแˆ›แˆ...
แ‹ฐแŒ‹แŒแˆž แ‹ฐแŒ‹แŒแˆž แฃ แˆŒแˆ‹ แŠ แ‹ญแŠ“แŒˆแˆญแˆ
แŠฅแˆฑแˆ แˆแŠญ แŠฅแŠ•แ‹ฐแŠ” ...
แŠ แŠ•แ‹ทแŠ• แ‰ แˆ˜แˆ”แ‹ท แฃ แˆณแ‹ซแŒฃแ‰ต แŠ แ‹ญแ‰€แˆญแˆแกแก
แ‰ฅแ‰ป แˆฐแŠญแˆชแ‹ซแˆˆแˆ
แˆˆแˆ˜แŠ•แŒˆแ‹ฐแŠ› แˆดแ‰ต แฃ
แ‹จแ‰ฐแƒแˆ แŒแŒฅแˆแŠ• แฃ แŒ†แˆฎแ‹ฌ แ‹ซแ‹ฐแˆžแŒฃแˆ
แˆ˜แˆ”แ‹ตแˆฝแŠ• แ‹ซแ‹จ
แŠฅแŠ•แ‹ฐแˆŒแˆŒแˆฝแŠ แˆฒแ‹ซแ‹แ‰… แฃ แˆŠแŠ–แˆจแŠ แ‹ญแˆ˜แŒฃแˆ
แ‹ญแˆ… แАแ‹ แˆ˜แŠ•แŒˆแ‹ต แˆ›แˆˆแ‰ต!
แ‹จแˆฐแŠซแˆซแˆ แŒแŒฅแˆแŠ• แˆฐแŠญแˆฌ แˆตแˆจแ‹ณแ‹
แˆ›แแ‰€แˆจ แˆณแ‹ญแˆ†แŠ• แˆˆแŠ” แฃ แˆ˜แˆญแˆณแ‰ต แАแ‹ แˆšแŒŽแ‹ณแ‹!!!

แˆฐแˆˆแ‹ˆแ‹ฐแ‹ตแŠฉแ‰ต แАแ‹
๐Ÿ‘7โคโ€๐Ÿ”ฅ3โค1
let's takcle leet code medium question for the first time
๐Ÿ‘2
#binary_search #Medium #leet_code_Q7 852. Peak Index in a Mountain Array

An array arr is a mountain if the following properties hold:

arr.length >= 3
There exists some i with 0 < i < arr.length - 1 such that:
arr[0] < arr[1] < ... < arr[i - 1] < arr[i]
arr[i] > arr[i + 1] > ... > arr[arr.length - 1]
Given a mountain array arr, return the index i such that arr[0] < arr[1] < ... < arr[i - 1] < arr[i] > arr[i + 1] > ... > arr[arr.length - 1].

You must solve it in O(log(arr.length)) time complexity.
๐Ÿ‘5
Example 1:

Input: arr = [0,1,0]
Output: 1
Example 2:

Input: arr = [0,2,1,0]
Output: 1
Example 3:

Input: arr = [0,10,5,2]
Output: 1
๐Ÿ‘2
Constraints:

3 <= arr.length <= 105
0 <= arr[i] <= 106
arr is guaranteed to be a mountain array.
๐Ÿ‘2
How do we solve this? Any ideas?