Skip to content

Commit 1b255ad

Browse files
committed
Added tasks 1-35
1 parent 4a84b64 commit 1b255ad

File tree

26 files changed

+3347
-0
lines changed

26 files changed

+3347
-0
lines changed

README.md

Lines changed: 1270 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
[![](https://img.shields.io/github/stars/LeetCode-in-JavaScript/LeetCode-in-JavaScript?label=Stars&style=flat-square)](https://github.com/LeetCode-in-JavaScript/LeetCode-in-JavaScript)
2+
[![](https://img.shields.io/github/forks/LeetCode-in-JavaScript/LeetCode-in-JavaScript?label=Fork%20me%20on%20GitHub%20&style=flat-square)](https://github.com/LeetCode-in-JavaScript/LeetCode-in-JavaScript/fork)
3+
4+
## 1\. Two Sum
5+
6+
Easy
7+
8+
Given an array of integers `nums` and an integer `target`, return _indices of the two numbers such that they add up to `target`_.
9+
10+
You may assume that each input would have **_exactly_ one solution**, and you may not use the _same_ element twice.
11+
12+
You can return the answer in any order.
13+
14+
**Example 1:**
15+
16+
**Input:** nums = [2,7,11,15], target = 9
17+
18+
**Output:** [0,1]
19+
20+
**Explanation:** Because nums[0] + nums[1] == 9, we return [0, 1].
21+
22+
**Example 2:**
23+
24+
**Input:** nums = [3,2,4], target = 6
25+
26+
**Output:** [1,2]
27+
28+
**Example 3:**
29+
30+
**Input:** nums = [3,3], target = 6
31+
32+
**Output:** [0,1]
33+
34+
**Constraints:**
35+
36+
* <code>2 <= nums.length <= 10<sup>4</sup></code>
37+
* <code>-10<sup>9</sup> <= nums[i] <= 10<sup>9</sup></code>
38+
* <code>-10<sup>9</sup> <= target <= 10<sup>9</sup></code>
39+
* **Only one valid answer exists.**
40+
41+
**Follow-up:** Can you come up with an algorithm that is less than <code>O(n<sup>2</sup>)</code> time complexity?
42+
43+
## Solution
44+
45+
```javascript
46+
/**
47+
* @param {number[]} nums
48+
* @param {number} target
49+
* @return {number[]}
50+
*/
51+
function twoSum(nums, target) {
52+
const indexMap = new Map()
53+
for (let i = 0; i < nums.length; i++) {
54+
const requiredNum = target - nums[i]
55+
if (indexMap.has(requiredNum)) {
56+
return [indexMap.get(requiredNum), i]
57+
}
58+
indexMap.set(nums[i], i)
59+
}
60+
return [-1, -1]
61+
}
62+
63+
export { twoSum }
64+
```
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
[![](https://img.shields.io/github/stars/LeetCode-in-JavaScript/LeetCode-in-JavaScript?label=Stars&style=flat-square)](https://github.com/LeetCode-in-JavaScript/LeetCode-in-JavaScript)
2+
[![](https://img.shields.io/github/forks/LeetCode-in-JavaScript/LeetCode-in-JavaScript?label=Fork%20me%20on%20GitHub%20&style=flat-square)](https://github.com/LeetCode-in-JavaScript/LeetCode-in-JavaScript/fork)
3+
4+
## 2\. Add Two Numbers
5+
6+
Medium
7+
8+
You are given two **non-empty** linked lists representing two non-negative integers. The digits are stored in **reverse order**, and each of their nodes contains a single digit. Add the two numbers and return the sum as a linked list.
9+
10+
You may assume the two numbers do not contain any leading zero, except the number 0 itself.
11+
12+
**Example 1:**
13+
14+
![](https://assets.leetcode.com/uploads/2020/10/02/addtwonumber1.jpg)
15+
16+
**Input:** l1 = [2,4,3], l2 = [5,6,4]
17+
18+
**Output:** [7,0,8]
19+
20+
**Explanation:** 342 + 465 = 807.
21+
22+
**Example 2:**
23+
24+
**Input:** l1 = [0], l2 = [0]
25+
26+
**Output:** [0]
27+
28+
**Example 3:**
29+
30+
**Input:** l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
31+
32+
**Output:** [8,9,9,9,0,0,0,1]
33+
34+
**Constraints:**
35+
36+
* The number of nodes in each linked list is in the range `[1, 100]`.
37+
* `0 <= Node.val <= 9`
38+
* It is guaranteed that the list represents a number that does not have leading zeros.
39+
40+
## Solution
41+
42+
```javascript
43+
import { ListNode } from 'src/main/js/com_github_leetcode/listnode'
44+
45+
/**
46+
* Definition for singly-linked list.
47+
* function ListNode(val, next) {
48+
* this.val = (val===undefined ? 0 : val)
49+
* this.next = (next===undefined ? null : next)
50+
* }
51+
*/
52+
/**
53+
* @param {ListNode} l1
54+
* @param {ListNode} l2
55+
* @return {ListNode}
56+
*/
57+
var addTwoNumbers = function (l1, l2) {
58+
const dummyHead = new ListNode(0)
59+
let p = l1,
60+
q = l2,
61+
curr = dummyHead
62+
let carry = 0
63+
64+
while (p !== null || q !== null) {
65+
const x = p !== null ? p.val : 0
66+
const y = q !== null ? q.val : 0
67+
const sum = carry + x + y
68+
carry = Math.floor(sum / 10)
69+
curr.next = new ListNode(sum % 10)
70+
curr = curr.next
71+
72+
if (p !== null) p = p.next
73+
if (q !== null) q = q.next
74+
}
75+
76+
if (carry > 0) {
77+
curr.next = new ListNode(carry)
78+
}
79+
80+
return dummyHead.next
81+
}
82+
83+
export { addTwoNumbers }
84+
```
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
[![](https://img.shields.io/github/stars/LeetCode-in-JavaScript/LeetCode-in-JavaScript?label=Stars&style=flat-square)](https://github.com/LeetCode-in-JavaScript/LeetCode-in-JavaScript)
2+
[![](https://img.shields.io/github/forks/LeetCode-in-JavaScript/LeetCode-in-JavaScript?label=Fork%20me%20on%20GitHub%20&style=flat-square)](https://github.com/LeetCode-in-JavaScript/LeetCode-in-JavaScript/fork)
3+
4+
## 3\. Longest Substring Without Repeating Characters
5+
6+
Medium
7+
8+
Given a string `s`, find the length of the **longest substring** without repeating characters.
9+
10+
**Example 1:**
11+
12+
**Input:** s = "abcabcbb"
13+
14+
**Output:** 3
15+
16+
**Explanation:** The answer is "abc", with the length of 3.
17+
18+
**Example 2:**
19+
20+
**Input:** s = "bbbbb"
21+
22+
**Output:** 1
23+
24+
**Explanation:** The answer is "b", with the length of 1.
25+
26+
**Example 3:**
27+
28+
**Input:** s = "pwwkew"
29+
30+
**Output:** 3
31+
32+
**Explanation:** 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.
33+
34+
**Example 4:**
35+
36+
**Input:** s = ""
37+
38+
**Output:** 0
39+
40+
**Constraints:**
41+
42+
* <code>0 <= s.length <= 5 * 10<sup>4</sup></code>
43+
* `s` consists of English letters, digits, symbols and spaces.
44+
45+
## Solution
46+
47+
```javascript
48+
/**
49+
* @param {string} s
50+
* @return {number}
51+
*/
52+
var lengthOfLongestSubstring = function (s) {
53+
const lastIndices = new Array(256).fill(-1) // Array to store last indices of characters
54+
let maxLen = 0 // Tracks maximum length of substring
55+
let curLen = 0 // Current substring length
56+
let start = 0 // Start index of the current substring
57+
58+
for (let i = 0; i < s.length; i++) {
59+
const cur = s.charCodeAt(i) // Get ASCII code of the current character
60+
61+
if (lastIndices[cur] < start) {
62+
// If the character hasn't been seen in the current substring
63+
lastIndices[cur] = i
64+
curLen++
65+
} else {
66+
// If the character was seen, update the start position
67+
const lastIndex = lastIndices[cur]
68+
start = lastIndex + 1
69+
curLen = i - start + 1
70+
lastIndices[cur] = i
71+
}
72+
73+
maxLen = Math.max(maxLen, curLen)
74+
}
75+
76+
return maxLen
77+
}
78+
79+
export { lengthOfLongestSubstring }
80+
```
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
[![](https://img.shields.io/github/stars/LeetCode-in-JavaScript/LeetCode-in-JavaScript?label=Stars&style=flat-square)](https://github.com/LeetCode-in-JavaScript/LeetCode-in-JavaScript)
2+
[![](https://img.shields.io/github/forks/LeetCode-in-JavaScript/LeetCode-in-JavaScript?label=Fork%20me%20on%20GitHub%20&style=flat-square)](https://github.com/LeetCode-in-JavaScript/LeetCode-in-JavaScript/fork)
3+
4+
## 4\. Median of Two Sorted Arrays
5+
6+
Hard
7+
8+
Given two sorted arrays `nums1` and `nums2` of size `m` and `n` respectively, return **the median** of the two sorted arrays.
9+
10+
The overall run time complexity should be `O(log (m+n))`.
11+
12+
**Example 1:**
13+
14+
**Input:** nums1 = [1,3], nums2 = [2]
15+
16+
**Output:** 2.00000
17+
18+
**Explanation:** merged array = [1,2,3] and median is 2.
19+
20+
**Example 2:**
21+
22+
**Input:** nums1 = [1,2], nums2 = [3,4]
23+
24+
**Output:** 2.50000
25+
26+
**Explanation:** merged array = [1,2,3,4] and median is (2 + 3) / 2 = 2.5.
27+
28+
**Example 3:**
29+
30+
**Input:** nums1 = [0,0], nums2 = [0,0]
31+
32+
**Output:** 0.00000
33+
34+
**Example 4:**
35+
36+
**Input:** nums1 = [], nums2 = [1]
37+
38+
**Output:** 1.00000
39+
40+
**Example 5:**
41+
42+
**Input:** nums1 = [2], nums2 = []
43+
44+
**Output:** 2.00000
45+
46+
**Constraints:**
47+
48+
* `nums1.length == m`
49+
* `nums2.length == n`
50+
* `0 <= m <= 1000`
51+
* `0 <= n <= 1000`
52+
* `1 <= m + n <= 2000`
53+
* <code>-10<sup>6</sup> <= nums1[i], nums2[i] <= 10<sup>6</sup></code>
54+
55+
## Solution
56+
57+
```javascript
58+
/**
59+
* @param {number[]} nums1
60+
* @param {number[]} nums2
61+
* @return {number}
62+
*/
63+
var findMedianSortedArrays = function (nums1, nums2) {
64+
if (nums2.length < nums1.length) {
65+
return findMedianSortedArrays(nums2, nums1)
66+
}
67+
68+
let n1 = nums1.length,
69+
n2 = nums2.length
70+
let low = 0,
71+
high = n1
72+
73+
while (low <= high) {
74+
let cut1 = Math.floor((low + high) / 2)
75+
let cut2 = Math.floor((n1 + n2 + 1) / 2) - cut1
76+
77+
let l1 = cut1 === 0 ? -Infinity : nums1[cut1 - 1]
78+
let l2 = cut2 === 0 ? -Infinity : nums2[cut2 - 1]
79+
let r1 = cut1 === n1 ? Infinity : nums1[cut1]
80+
let r2 = cut2 === n2 ? Infinity : nums2[cut2]
81+
82+
if (l1 <= r2 && l2 <= r1) {
83+
if ((n1 + n2) % 2 === 0) {
84+
return (Math.max(l1, l2) + Math.min(r1, r2)) / 2.0
85+
}
86+
return Math.max(l1, l2)
87+
} else if (l1 > r2) {
88+
high = cut1 - 1
89+
} else {
90+
low = cut1 + 1
91+
}
92+
}
93+
94+
return 0.0
95+
}
96+
97+
export { findMedianSortedArrays }
98+
```

0 commit comments

Comments
 (0)