mirror of
https://github.com/devenperez/leetcode.git
synced 2026-06-13 14:57:08 +00:00
Removing old questions
Removed questions uploaded using an old version of LeetHub Questions 2,3,4,19,36,141,206
This commit is contained in:
@@ -1,22 +0,0 @@
|
|||||||
# Definition for singly-linked list.
|
|
||||||
# class ListNode(object):
|
|
||||||
# def __init__(self, x):
|
|
||||||
# self.val = x
|
|
||||||
# self.next = None
|
|
||||||
|
|
||||||
class Solution(object):
|
|
||||||
def hasCycle(self, head):
|
|
||||||
"""
|
|
||||||
:type head: ListNode
|
|
||||||
:rtype: bool
|
|
||||||
"""
|
|
||||||
if head == None or head.next == None: return False
|
|
||||||
myDict = {head: 0}
|
|
||||||
point = head
|
|
||||||
while True:
|
|
||||||
point = point.next
|
|
||||||
if point == None: return False
|
|
||||||
if myDict.get(point) == None:
|
|
||||||
myDict[point] = 0
|
|
||||||
else:
|
|
||||||
return True
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
<h2><a href="https://leetcode.com/problems/linked-list-cycle/">141. Linked List Cycle</a></h2><h3>Easy</h3><hr><div><p>Given <code>head</code>, the head of a linked list, determine if the linked list has a cycle in it.</p>
|
|
||||||
|
|
||||||
<p>There is a cycle in a linked list if there is some node in the list that can be reached again by continuously following the <code>next</code> pointer. Internally, <code>pos</code> is used to denote the index of the node that tail's <code>next</code> pointer is connected to. <strong>Note that <code>pos</code> is not passed as a parameter</strong>.</p>
|
|
||||||
|
|
||||||
<p>Return <code>true</code><em> if there is a cycle in the linked list</em>. Otherwise, return <code>false</code>.</p>
|
|
||||||
|
|
||||||
<p> </p>
|
|
||||||
<p><strong>Example 1:</strong></p>
|
|
||||||
<img alt="" src="https://assets.leetcode.com/uploads/2018/12/07/circularlinkedlist.png" style="width: 300px; height: 97px; margin-top: 8px; margin-bottom: 8px;">
|
|
||||||
<pre><strong>Input:</strong> head = [3,2,0,-4], pos = 1
|
|
||||||
<strong>Output:</strong> true
|
|
||||||
<strong>Explanation:</strong> There is a cycle in the linked list, where the tail connects to the 1st node (0-indexed).
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p><strong>Example 2:</strong></p>
|
|
||||||
<img alt="" src="https://assets.leetcode.com/uploads/2018/12/07/circularlinkedlist_test2.png" style="width: 141px; height: 74px;">
|
|
||||||
<pre><strong>Input:</strong> head = [1,2], pos = 0
|
|
||||||
<strong>Output:</strong> true
|
|
||||||
<strong>Explanation:</strong> There is a cycle in the linked list, where the tail connects to the 0th node.
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p><strong>Example 3:</strong></p>
|
|
||||||
<img alt="" src="https://assets.leetcode.com/uploads/2018/12/07/circularlinkedlist_test3.png" style="width: 45px; height: 45px;">
|
|
||||||
<pre><strong>Input:</strong> head = [1], pos = -1
|
|
||||||
<strong>Output:</strong> false
|
|
||||||
<strong>Explanation:</strong> There is no cycle in the linked list.
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p> </p>
|
|
||||||
<p><strong>Constraints:</strong></p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>The number of the nodes in the list is in the range <code>[0, 10<sup>4</sup>]</code>.</li>
|
|
||||||
<li><code>-10<sup>5</sup> <= Node.val <= 10<sup>5</sup></code></li>
|
|
||||||
<li><code>pos</code> is <code>-1</code> or a <strong>valid index</strong> in the linked-list.</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<p> </p>
|
|
||||||
<p><strong>Follow up:</strong> Can you solve it using <code>O(1)</code> (i.e. constant) memory?</p>
|
|
||||||
</div>
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
# Definition for singly-linked list.
|
|
||||||
# class ListNode(object):
|
|
||||||
# def __init__(self, val=0, next=None):
|
|
||||||
# self.val = val
|
|
||||||
# self.next = next
|
|
||||||
class Solution(object):
|
|
||||||
def removeNthFromEnd(self, head, n):
|
|
||||||
"""
|
|
||||||
:type head: ListNode
|
|
||||||
:type n: int
|
|
||||||
:rtype: ListNode
|
|
||||||
"""
|
|
||||||
|
|
||||||
# Get length
|
|
||||||
counterNode = head
|
|
||||||
length = 0
|
|
||||||
while counterNode != None:
|
|
||||||
counterNode = counterNode.next
|
|
||||||
length = length + 1
|
|
||||||
|
|
||||||
# Readjust
|
|
||||||
if length == 1: return None
|
|
||||||
if length == n: return head.next
|
|
||||||
nodeBefore = head
|
|
||||||
for i in range(length - n - 1):
|
|
||||||
nodeBefore = nodeBefore.next
|
|
||||||
if n == 1:
|
|
||||||
nodeBefore.next = None
|
|
||||||
else:
|
|
||||||
nodeBefore.next = nodeBefore.next.next
|
|
||||||
|
|
||||||
return head
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
<h2><a href="https://leetcode.com/problems/remove-nth-node-from-end-of-list/">19. Remove Nth Node From End of List</a></h2><h3>Medium</h3><hr><div><p>Given the <code>head</code> of a linked list, remove the <code>n<sup>th</sup></code> node from the end of the list and return its head.</p>
|
|
||||||
|
|
||||||
<p> </p>
|
|
||||||
<p><strong>Example 1:</strong></p>
|
|
||||||
<img alt="" src="https://assets.leetcode.com/uploads/2020/10/03/remove_ex1.jpg" style="width: 542px; height: 222px;">
|
|
||||||
<pre><strong>Input:</strong> head = [1,2,3,4,5], n = 2
|
|
||||||
<strong>Output:</strong> [1,2,3,5]
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p><strong>Example 2:</strong></p>
|
|
||||||
|
|
||||||
<pre><strong>Input:</strong> head = [1], n = 1
|
|
||||||
<strong>Output:</strong> []
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p><strong>Example 3:</strong></p>
|
|
||||||
|
|
||||||
<pre><strong>Input:</strong> head = [1,2], n = 1
|
|
||||||
<strong>Output:</strong> [1]
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p> </p>
|
|
||||||
<p><strong>Constraints:</strong></p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>The number of nodes in the list is <code>sz</code>.</li>
|
|
||||||
<li><code>1 <= sz <= 30</code></li>
|
|
||||||
<li><code>0 <= Node.val <= 100</code></li>
|
|
||||||
<li><code>1 <= n <= sz</code></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<p> </p>
|
|
||||||
<p><strong>Follow up:</strong> Could you do this in one pass?</p>
|
|
||||||
</div>
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
# Definition for singly-linked list.
|
|
||||||
# class ListNode(object):
|
|
||||||
# def __init__(self, val=0, next=None):
|
|
||||||
# self.val = val
|
|
||||||
# self.next = next
|
|
||||||
class Solution(object):
|
|
||||||
def addTwoNumbers(self, l1, l2):
|
|
||||||
"""
|
|
||||||
:type l1: ListNode
|
|
||||||
:type l2: ListNode
|
|
||||||
:rtype: ListNode
|
|
||||||
"""
|
|
||||||
sum = ListNode((l1.val + l2.val) % 10)
|
|
||||||
carry = (l1.val + l2.val) / 10
|
|
||||||
follow = sum
|
|
||||||
num1 = l1.next
|
|
||||||
num2 = l2.next
|
|
||||||
while num1 != None or num2 != None or carry > 0:
|
|
||||||
if num1 == None and num2 == None:
|
|
||||||
follow.next = ListNode(carry)
|
|
||||||
carry = 0
|
|
||||||
elif num1 == None:
|
|
||||||
follow.next = ListNode((num2.val + carry) % 10)
|
|
||||||
follow = follow.next
|
|
||||||
carry = (num2.val + carry) / 10
|
|
||||||
num2 = num2.next
|
|
||||||
elif num2 == None:
|
|
||||||
follow.next = ListNode((num1.val + carry) % 10)
|
|
||||||
follow = follow.next
|
|
||||||
carry = (num1.val + carry) / 10
|
|
||||||
num1 = num1.next
|
|
||||||
else:
|
|
||||||
follow.next = ListNode((num1.val + num2.val + carry) % 10)
|
|
||||||
follow = follow.next
|
|
||||||
carry = (num1.val + num2.val + carry) / 10
|
|
||||||
num1 = num1.next
|
|
||||||
num2 = num2.next
|
|
||||||
return sum
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
<h2><a href="https://leetcode.com/problems/add-two-numbers/">2. Add Two Numbers</a></h2><h3>Medium</h3><hr><div><p>You are given two <strong>non-empty</strong> linked lists representing two non-negative integers. The digits are stored in <strong>reverse order</strong>, and each of their nodes contains a single digit. Add the two numbers and return the sum as a linked list.</p>
|
|
||||||
|
|
||||||
<p>You may assume the two numbers do not contain any leading zero, except the number 0 itself.</p>
|
|
||||||
|
|
||||||
<p> </p>
|
|
||||||
<p><strong>Example 1:</strong></p>
|
|
||||||
<img alt="" src="https://assets.leetcode.com/uploads/2020/10/02/addtwonumber1.jpg" style="width: 483px; height: 342px;">
|
|
||||||
<pre><strong>Input:</strong> l1 = [2,4,3], l2 = [5,6,4]
|
|
||||||
<strong>Output:</strong> [7,0,8]
|
|
||||||
<strong>Explanation:</strong> 342 + 465 = 807.
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p><strong>Example 2:</strong></p>
|
|
||||||
|
|
||||||
<pre><strong>Input:</strong> l1 = [0], l2 = [0]
|
|
||||||
<strong>Output:</strong> [0]
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p><strong>Example 3:</strong></p>
|
|
||||||
|
|
||||||
<pre><strong>Input:</strong> l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
|
|
||||||
<strong>Output:</strong> [8,9,9,9,0,0,0,1]
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p> </p>
|
|
||||||
<p><strong>Constraints:</strong></p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>The number of nodes in each linked list is in the range <code>[1, 100]</code>.</li>
|
|
||||||
<li><code>0 <= Node.val <= 9</code></li>
|
|
||||||
<li>It is guaranteed that the list represents a number that does not have leading zeros.</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
# Definition for singly-linked list.
|
|
||||||
# class ListNode(object):
|
|
||||||
# def __init__(self, val=0, next=None):
|
|
||||||
# self.val = val
|
|
||||||
# self.next = next
|
|
||||||
class Solution(object):
|
|
||||||
def reverseList(self, head):
|
|
||||||
"""
|
|
||||||
:type head: ListNode
|
|
||||||
:rtype: ListNode
|
|
||||||
"""
|
|
||||||
if head == None: return None
|
|
||||||
if head.next == None: return head
|
|
||||||
|
|
||||||
reversedHead = ListNode(head.val)
|
|
||||||
oldNode = head.next
|
|
||||||
while oldNode != None:
|
|
||||||
reversedHead = ListNode(oldNode.val, reversedHead)
|
|
||||||
oldNode = oldNode.next
|
|
||||||
return reversedHead
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
<h2><a href="https://leetcode.com/problems/reverse-linked-list/">206. Reverse Linked List</a></h2><h3>Easy</h3><hr><div><p>Given the <code>head</code> of a singly linked list, reverse the list, and return <em>the reversed list</em>.</p>
|
|
||||||
|
|
||||||
<p> </p>
|
|
||||||
<p><strong>Example 1:</strong></p>
|
|
||||||
<img alt="" src="https://assets.leetcode.com/uploads/2021/02/19/rev1ex1.jpg" style="width: 542px; height: 222px;">
|
|
||||||
<pre><strong>Input:</strong> head = [1,2,3,4,5]
|
|
||||||
<strong>Output:</strong> [5,4,3,2,1]
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p><strong>Example 2:</strong></p>
|
|
||||||
<img alt="" src="https://assets.leetcode.com/uploads/2021/02/19/rev1ex2.jpg" style="width: 182px; height: 222px;">
|
|
||||||
<pre><strong>Input:</strong> head = [1,2]
|
|
||||||
<strong>Output:</strong> [2,1]
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p><strong>Example 3:</strong></p>
|
|
||||||
|
|
||||||
<pre><strong>Input:</strong> head = []
|
|
||||||
<strong>Output:</strong> []
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p> </p>
|
|
||||||
<p><strong>Constraints:</strong></p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>The number of nodes in the list is the range <code>[0, 5000]</code>.</li>
|
|
||||||
<li><code>-5000 <= Node.val <= 5000</code></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<p> </p>
|
|
||||||
<p><strong>Follow up:</strong> A linked list can be reversed either iteratively or recursively. Could you implement both?</p>
|
|
||||||
</div>
|
|
||||||
-26
@@ -1,26 +0,0 @@
|
|||||||
class Solution(object):
|
|
||||||
def lengthOfLongestSubstring(self, s):
|
|
||||||
"""
|
|
||||||
:type s: str
|
|
||||||
:rtype: int
|
|
||||||
"""
|
|
||||||
letters = [x for x in s]
|
|
||||||
longestLength = 1
|
|
||||||
|
|
||||||
if len(letters) == 0: return 0
|
|
||||||
|
|
||||||
for i in range(len(letters)):
|
|
||||||
dictionary = {}
|
|
||||||
for j in range(i, len(letters)):
|
|
||||||
if dictionary.get(letters[j]) == None:
|
|
||||||
dictionary[letters[j]] = 0
|
|
||||||
else:
|
|
||||||
if j-i > longestLength:
|
|
||||||
longestLength = j-i
|
|
||||||
break
|
|
||||||
|
|
||||||
if j == len(letters) - 1:
|
|
||||||
if j-i+1 > longestLength:
|
|
||||||
longestLength = j-i+1
|
|
||||||
return longestLength
|
|
||||||
return longestLength
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
<h2><a href="https://leetcode.com/problems/longest-substring-without-repeating-characters/">3. Longest Substring Without Repeating Characters</a></h2><h3>Medium</h3><hr><div><p>Given a string <code>s</code>, find the length of the <strong>longest substring</strong> without repeating characters.</p>
|
|
||||||
|
|
||||||
<p> </p>
|
|
||||||
<p><strong>Example 1:</strong></p>
|
|
||||||
|
|
||||||
<pre><strong>Input:</strong> s = "abcabcbb"
|
|
||||||
<strong>Output:</strong> 3
|
|
||||||
<strong>Explanation:</strong> The answer is "abc", with the length of 3.
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p><strong>Example 2:</strong></p>
|
|
||||||
|
|
||||||
<pre><strong>Input:</strong> s = "bbbbb"
|
|
||||||
<strong>Output:</strong> 1
|
|
||||||
<strong>Explanation:</strong> The answer is "b", with the length of 1.
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p><strong>Example 3:</strong></p>
|
|
||||||
|
|
||||||
<pre><strong>Input:</strong> s = "pwwkew"
|
|
||||||
<strong>Output:</strong> 3
|
|
||||||
<strong>Explanation:</strong> The answer is "wke", with the length of 3.
|
|
||||||
Notice that the answer must be a substring, "pwke" is a subsequence and not a substring.
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p> </p>
|
|
||||||
<p><strong>Constraints:</strong></p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><code>0 <= s.length <= 5 * 10<sup>4</sup></code></li>
|
|
||||||
<li><code>s</code> consists of English letters, digits, symbols and spaces.</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
class Solution(object):
|
|
||||||
def isValidSudoku(self, board):
|
|
||||||
"""
|
|
||||||
:type board: List[List[str]]
|
|
||||||
:rtype: bool
|
|
||||||
"""
|
|
||||||
# Check horizontals
|
|
||||||
for i in range(len(board)):
|
|
||||||
inRow = [False] * 10
|
|
||||||
|
|
||||||
for j in range(len(board[i])):
|
|
||||||
if board[i][j] == ".":
|
|
||||||
continue
|
|
||||||
else:
|
|
||||||
if inRow[int(board[i][j])]:
|
|
||||||
return False
|
|
||||||
else:
|
|
||||||
inRow[int(board[i][j])] = True
|
|
||||||
|
|
||||||
|
|
||||||
# Check verticals
|
|
||||||
for j in range(len(board[0])):
|
|
||||||
inColumn = [False] * 10
|
|
||||||
|
|
||||||
for i in range(len(board)):
|
|
||||||
if board[i][j] == ".":
|
|
||||||
continue
|
|
||||||
else:
|
|
||||||
if inColumn[int(board[i][j])]:
|
|
||||||
return False
|
|
||||||
else:
|
|
||||||
inColumn[int(board[i][j])] = True
|
|
||||||
|
|
||||||
# Check boxes
|
|
||||||
for boxI in range(3):
|
|
||||||
for boxJ in range(3):
|
|
||||||
inBox = [False] * 10
|
|
||||||
for i in range(3):
|
|
||||||
for j in range(3):
|
|
||||||
if board[(boxI * 3) + i][(boxJ * 3) + j] == ".":
|
|
||||||
continue
|
|
||||||
else:
|
|
||||||
if inBox[int(board[(boxI * 3) + i][(boxJ * 3) + j])]:
|
|
||||||
return False
|
|
||||||
else:
|
|
||||||
inBox[int(board[(boxI * 3) + i][(boxJ * 3) + j])] = True
|
|
||||||
|
|
||||||
return True
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
<h2><a href="https://leetcode.com/problems/valid-sudoku/">36. Valid Sudoku</a></h2><h3>Medium</h3><hr><div><p>Determine if a <code>9 x 9</code> Sudoku board is valid. Only the filled cells need to be validated <strong>according to the following rules</strong>:</p>
|
|
||||||
|
|
||||||
<ol>
|
|
||||||
<li>Each row must contain the digits <code>1-9</code> without repetition.</li>
|
|
||||||
<li>Each column must contain the digits <code>1-9</code> without repetition.</li>
|
|
||||||
<li>Each of the nine <code>3 x 3</code> sub-boxes of the grid must contain the digits <code>1-9</code> without repetition.</li>
|
|
||||||
</ol>
|
|
||||||
|
|
||||||
<p><strong>Note:</strong></p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>A Sudoku board (partially filled) could be valid but is not necessarily solvable.</li>
|
|
||||||
<li>Only the filled cells need to be validated according to the mentioned rules.</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<p> </p>
|
|
||||||
<p><strong>Example 1:</strong></p>
|
|
||||||
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/f/ff/Sudoku-by-L2G-20050714.svg/250px-Sudoku-by-L2G-20050714.svg.png" style="height:250px; width:250px">
|
|
||||||
<pre><strong>Input:</strong> board =
|
|
||||||
[["5","3",".",".","7",".",".",".","."]
|
|
||||||
,["6",".",".","1","9","5",".",".","."]
|
|
||||||
,[".","9","8",".",".",".",".","6","."]
|
|
||||||
,["8",".",".",".","6",".",".",".","3"]
|
|
||||||
,["4",".",".","8",".","3",".",".","1"]
|
|
||||||
,["7",".",".",".","2",".",".",".","6"]
|
|
||||||
,[".","6",".",".",".",".","2","8","."]
|
|
||||||
,[".",".",".","4","1","9",".",".","5"]
|
|
||||||
,[".",".",".",".","8",".",".","7","9"]]
|
|
||||||
<strong>Output:</strong> true
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p><strong>Example 2:</strong></p>
|
|
||||||
|
|
||||||
<pre><strong>Input:</strong> board =
|
|
||||||
[["8","3",".",".","7",".",".",".","."]
|
|
||||||
,["6",".",".","1","9","5",".",".","."]
|
|
||||||
,[".","9","8",".",".",".",".","6","."]
|
|
||||||
,["8",".",".",".","6",".",".",".","3"]
|
|
||||||
,["4",".",".","8",".","3",".",".","1"]
|
|
||||||
,["7",".",".",".","2",".",".",".","6"]
|
|
||||||
,[".","6",".",".",".",".","2","8","."]
|
|
||||||
,[".",".",".","4","1","9",".",".","5"]
|
|
||||||
,[".",".",".",".","8",".",".","7","9"]]
|
|
||||||
<strong>Output:</strong> false
|
|
||||||
<strong>Explanation:</strong> Same as Example 1, except with the <strong>5</strong> in the top left corner being modified to <strong>8</strong>. Since there are two 8's in the top left 3x3 sub-box, it is invalid.
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p> </p>
|
|
||||||
<p><strong>Constraints:</strong></p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><code>board.length == 9</code></li>
|
|
||||||
<li><code>board[i].length == 9</code></li>
|
|
||||||
<li><code>board[i][j]</code> is a digit <code>1-9</code> or <code>'.'</code>.</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
class Solution(object):
|
|
||||||
def findMedianSortedArrays(self, nums1, nums2):
|
|
||||||
"""
|
|
||||||
:type nums1: List[int]
|
|
||||||
:type nums2: List[int]
|
|
||||||
:rtype: float
|
|
||||||
"""
|
|
||||||
|
|
||||||
# Variables
|
|
||||||
totalLength = len(nums1) + len(nums2)
|
|
||||||
goalIndex = (totalLength / 2.0) - 0.5 # Index of median
|
|
||||||
num1Index = 0
|
|
||||||
num2Index = 0
|
|
||||||
median = 0.0
|
|
||||||
|
|
||||||
# Go through arrays simultaniously
|
|
||||||
# Indexing up only on the lower number
|
|
||||||
# Stop after we hit "goalIndex"
|
|
||||||
for i in range(int(goalIndex + 1.5)):
|
|
||||||
# OOB Checks
|
|
||||||
if num1Index >= len(nums1):
|
|
||||||
lowestNum2 = nums2[num2Index]
|
|
||||||
lowestNum1 = lowestNum2 + 1
|
|
||||||
elif num2Index >= len(nums2):
|
|
||||||
lowestNum1 = nums1[num1Index]
|
|
||||||
lowestNum2 = lowestNum1 + 1
|
|
||||||
else:
|
|
||||||
|
|
||||||
# QOL variables
|
|
||||||
lowestNum1 = nums1[num1Index]
|
|
||||||
lowestNum2 = nums2[num2Index]
|
|
||||||
|
|
||||||
# Index up logic
|
|
||||||
if lowestNum1 <= lowestNum2:
|
|
||||||
num1Index += 1
|
|
||||||
if i == int(goalIndex) or i == round(goalIndex):
|
|
||||||
median += lowestNum1
|
|
||||||
else:
|
|
||||||
num2Index += 1
|
|
||||||
if i == int(goalIndex) or i == round(goalIndex):
|
|
||||||
median += lowestNum2
|
|
||||||
|
|
||||||
# Divide median by 2 if array is even
|
|
||||||
if int(goalIndex) != round(goalIndex):
|
|
||||||
median /= 2
|
|
||||||
|
|
||||||
return median
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
<h2><a href="https://leetcode.com/problems/median-of-two-sorted-arrays/">4. Median of Two Sorted Arrays</a></h2><h3>Hard</h3><hr><div><p>Given two sorted arrays <code>nums1</code> and <code>nums2</code> of size <code>m</code> and <code>n</code> respectively, return <strong>the median</strong> of the two sorted arrays.</p>
|
|
||||||
|
|
||||||
<p>The overall run time complexity should be <code>O(log (m+n))</code>.</p>
|
|
||||||
|
|
||||||
<p> </p>
|
|
||||||
<p><strong>Example 1:</strong></p>
|
|
||||||
|
|
||||||
<pre><strong>Input:</strong> nums1 = [1,3], nums2 = [2]
|
|
||||||
<strong>Output:</strong> 2.00000
|
|
||||||
<strong>Explanation:</strong> merged array = [1,2,3] and median is 2.
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p><strong>Example 2:</strong></p>
|
|
||||||
|
|
||||||
<pre><strong>Input:</strong> nums1 = [1,2], nums2 = [3,4]
|
|
||||||
<strong>Output:</strong> 2.50000
|
|
||||||
<strong>Explanation:</strong> merged array = [1,2,3,4] and median is (2 + 3) / 2 = 2.5.
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p> </p>
|
|
||||||
<p><strong>Constraints:</strong></p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><code>nums1.length == m</code></li>
|
|
||||||
<li><code>nums2.length == n</code></li>
|
|
||||||
<li><code>0 <= m <= 1000</code></li>
|
|
||||||
<li><code>0 <= n <= 1000</code></li>
|
|
||||||
<li><code>1 <= m + n <= 2000</code></li>
|
|
||||||
<li><code>-10<sup>6</sup> <= nums1[i], nums2[i] <= 10<sup>6</sup></code></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
Reference in New Issue
Block a user