Leetcode.com 2021-09-15
🟡 978.longest-turbulent-subarray
🏷️ Tags
#array #dynamic_programming #sliding_window
Description
Given an integer array
A subarray is turbulent if the comparison sign flips between each adjacent pair of elements in the subarray.
More formally, a subarray
For
Or, for
Example
🟡 978.longest-turbulent-subarray
🏷️ Tags
#array #dynamic_programming #sliding_window
Description
Given an integer array
arr, return the length of a maximum size turbulent subarray of arr.A subarray is turbulent if the comparison sign flips between each adjacent pair of elements in the subarray.
More formally, a subarray
[arr[i], arr[i + 1], ..., arr[j]] of arr is said to be turbulent if and only if:For
i <= k < j:arr[k] > arr[k + 1] when k is odd, andarr[k] < arr[k + 1] when k is even.Or, for
i <= k < j:arr[k] > arr[k + 1] when k is even, andarr[k] < arr[k + 1] when k is odd.Example
Input: arr = [9,4,2,10,7,8,8,1,9]
Output: 5
Explanation: arr[1] > arr[2] < arr[3] > arr[4] < arr[5]
Leetcode-cn.com 2021-09-17
🟡 36.valid-sudoku
🏷️ Tags
#array #hash_table #matrix
Description
请你判断一个
数字
数字
数字
🟡 36.valid-sudoku
🏷️ Tags
#array #hash_table #matrix
Description
请你判断一个
9x9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。数字
1-9 在每一行只能出现一次。数字
1-9 在每一列只能出现一次。数字
1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考Example输入: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"]]
输出:true
Leetcode.com 2021-09-16
🟡 54.spiral-matrix
🏷️ Tags
#array #matrix #simulation
Description
Given an
Example
🟡 54.spiral-matrix
🏷️ Tags
#array #matrix #simulation
Description
Given an
m x n matrix, return all elements of the matrix in spiral order.Example
Input: matrix = [[1,2,3],[4,5,6],[7,8,9]]
Output: [1,2,3,6,9,8,7,4,5]
Leetcode-cn.com 2021-09-18
🟢 292.nim-game
🏷️ Tags
#brainteaser #math #game_theory
Description
你和你的朋友,两个人一起玩 Nim 游戏:
桌子上有一堆石头。
你们轮流进行自己的回合,你作为先手。
每一回合,轮到的人拿掉 1 - 3 块石头。
拿掉最后一块石头的人就是获胜者。
假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为
Example
🟢 292.nim-game
🏷️ Tags
#brainteaser #math #game_theory
Description
你和你的朋友,两个人一起玩 Nim 游戏:
桌子上有一堆石头。
你们轮流进行自己的回合,你作为先手。
每一回合,轮到的人拿掉 1 - 3 块石头。
拿掉最后一块石头的人就是获胜者。
假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为
n 的情况下赢得游戏。如果可以赢,返回 true;否则,返回 false 。Example
输入:n = 4
输出:false
解释:如果堆中有 4 块石头,那么你永远不会赢得比赛;
因为无论你拿走 1 块、2 块 还是 3 块石头,最后一块石头总是会被你的朋友拿走。
百度百科
Nim游戏_百度百科
Nim游戏是博弈论中最经典的模型(之一),它又有着十分简单的规则和无比优美的结论 Nim游戏是组合游戏(Combinatorial Games)的一种,准确来说,属于“Impartial Combinatorial Games”(以下简称ICG)。
Leetcode.com 2021-09-17
🟢 350.intersection-of-two-arrays-ii
🏷️ Tags
#array #hash_table #two_pointers #binary_search #sorting
Description
Given two integer arrays
Example
🟢 350.intersection-of-two-arrays-ii
🏷️ Tags
#array #hash_table #two_pointers #binary_search #sorting
Description
Given two integer arrays
nums1 and nums2, return an array of their intersection. Each element in the result must appear as many times as it shows in both arrays and you may return the result in any order.Example
Input: nums1 = [1,2,2,1], nums2 = [2,2]
Output: [2,2]
Leetcode-cn.com 2021-09-19
🟡 650.2-keys-keyboard
🏷️ Tags
#math #dynamic_programming
Description
最初记事本上只有一个字符
给你一个数字
Example
🟡 650.2-keys-keyboard
🏷️ Tags
#math #dynamic_programming
Description
最初记事本上只有一个字符
'A' 。你每次可以对这个记事本进行两种操作:Copy All(复制全部):复制这个记事本中的所有字符(不允许仅复制部分字符)。Paste(粘贴):粘贴 上一次 复制的字符。给你一个数字
n ,你需要使用最少的操作次数,在记事本上输出 恰好 n 个 'A' 。返回能够打印出 n 个 'A' 的最少操作次数。Example
输入:3
输出:3
解释:
最初, 只有一个字符 'A'。
第 1 步, 使用 Copy All 操作。
第 2 步, 使用 Paste 操作来获得 'AA'。
第 3 步, 使用 Paste 操作来获得 'AAA'。
Leetcode.com 2021-09-18
🔴 282.expression-add-operators
🏷️ Tags
#math #string #backtracking
Description
Given a string
Example
🔴 282.expression-add-operators
🏷️ Tags
#math #string #backtracking
Description
Given a string
num that contains only digits and an integer target, return all possibilities to add the binary operators '+', '-', or '*' between the digits of num so that the resultant expression evaluates to the target value.Example
Input: num = "123", target = 6
Output: ["1*2*3","1+2+3"]
Leetcode-cn.com 2021-09-20
🟡 673.number-of-longest-increasing-subsequence
🏷️ Tags
#binary_indexed_tree #segment_tree #array #dynamic_programming
Description
给定一个未排序的整数数组,找到最长递增子序列的个数。
Example
🟡 673.number-of-longest-increasing-subsequence
🏷️ Tags
#binary_indexed_tree #segment_tree #array #dynamic_programming
Description
给定一个未排序的整数数组,找到最长递增子序列的个数。
Example
输入: [1,3,5,4,7]
输出: 2
解释: 有两个最长递增子序列,分别是 [1, 3, 4, 7] 和[1, 3, 5, 7]。
Leetcode.com 2021-09-19
🔴 115.distinct-subsequences
🏷️ Tags
#string #dynamic_programming
Description
Given two strings
A string's subsequence is a new string formed from the original string by deleting some (can be none) of the characters without disturbing the remaining characters' relative positions. (i.e.,
It is guaranteed the answer fits on a 32-bit signed integer.
Example
🔴 115.distinct-subsequences
🏷️ Tags
#string #dynamic_programming
Description
Given two strings
s and t, return the number of distinct subsequences of s which equals t.A string's subsequence is a new string formed from the original string by deleting some (can be none) of the characters without disturbing the remaining characters' relative positions. (i.e.,
"ACE" is a subsequence of "ABCDE" while "AEC" is not).It is guaranteed the answer fits on a 32-bit signed integer.
Example
Input: s = "rabbbit", t = "rabbit"
Output: 3
Explanation:
As shown below, there are 3 ways you can generate "rabbit" from S.
rabbbit
rabbbit
rabbbit
Leetcode-cn.com 2021-09-21
🟢 58.length-of-last-word
🏷️ Tags
#string
Description
给你一个字符串
单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
Example
🟢 58.length-of-last-word
🏷️ Tags
#string
Description
给你一个字符串
s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
Example
输入:s = "Hello World"
输出:5
Leetcode.com 2021-09-20
🟢 1275.find-winner-on-a-tic-tac-toe-game
🏷️ Tags
#array #hash_table #matrix #simulation
Description
Tic-tac-toe is played by two players A and B on a 3 x 3 grid.
Here are the rules of Tic-Tac-Toe:
Players take turns placing characters into empty squares (" ").
The first player A always places "X" characters, while the second player B always places "O" characters.
"X" and "O" characters are always placed into empty squares, never on filled ones.
The game ends when there are 3 of the same (non-empty) character filling any row, column, or diagonal.
The game also ends if all squares are non-empty.
No more moves can be played if the game is over.
Given an array
Return the winner of the game if it exists (A or B), in case the game ends in a draw return "Draw", if there are still movements to play return "Pending".
You can assume that
Example
🟢 1275.find-winner-on-a-tic-tac-toe-game
🏷️ Tags
#array #hash_table #matrix #simulation
Description
Tic-tac-toe is played by two players A and B on a 3 x 3 grid.
Here are the rules of Tic-Tac-Toe:
Players take turns placing characters into empty squares (" ").
The first player A always places "X" characters, while the second player B always places "O" characters.
"X" and "O" characters are always placed into empty squares, never on filled ones.
The game ends when there are 3 of the same (non-empty) character filling any row, column, or diagonal.
The game also ends if all squares are non-empty.
No more moves can be played if the game is over.
Given an array
moves where each element is another array of size 2 corresponding to the row and column of the grid where they mark their respective character in the order in which A and B play.Return the winner of the game if it exists (A or B), in case the game ends in a draw return "Draw", if there are still movements to play return "Pending".
You can assume that
moves is valid (It follows the rules of Tic-Tac-Toe), the grid is initially empty and A will play first.Example
Input: moves = [[0,0],[2,0],[1,1],[2,1],[2,2]]
Output: "A"
Explanation: "A" wins, he always plays first.
"X " "X " "X " "X " "X "
" " -> " " -> " X " -> " X " -> " X "
" " "O " "O " "OO " "OOX"
Leetcode-cn.com 2021-09-22
🟡 725.split-linked-list-in-parts
🏷️ Tags
#linked_list
Description
给定一个头结点为
每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。
这k个部分应该按照在链表中出现的顺序进行输出,并且排在前面的部分的长度应该大于或等于后面的长度。
返回一个符合上述规则的链表的列表。
举例: 1->2->3->4, k = 5 // 5 结果 [ [1], [2], [3], [4], null ]
Example
🟡 725.split-linked-list-in-parts
🏷️ Tags
#linked_list
Description
给定一个头结点为
root 的链表, 编写一个函数以将链表分隔为 k 个连续的部分。每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。
这k个部分应该按照在链表中出现的顺序进行输出,并且排在前面的部分的长度应该大于或等于后面的长度。
返回一个符合上述规则的链表的列表。
举例: 1->2->3->4, k = 5 // 5 结果 [ [1], [2], [3], [4], null ]
Example
输入:
root = [1, 2, 3], k = 5
输出: [[1],[2],[3],[],[]]
解释:
输入输出各部分都应该是链表,而不是数组。
例如, 输入的结点 root 的 val= 1, root.next.val = 2, \root.next.next.val = 3, 且 root.next.next.next = null。
第一个输出 output[0] 是 output[0].val = 1, output[0].next = null。
最后一个元素 output[4] 为 null, 它代表了最后一个部分为空链表。
Leetcode.com 2021-09-21
🟢 485.max-consecutive-ones
🏷️ Tags
#array
Description
Given a binary array
Example
🟢 485.max-consecutive-ones
🏷️ Tags
#array
Description
Given a binary array
nums, return the maximum number of consecutive 1's in the array.Example
Input: nums = [1,1,0,1,1,1]
Output: 3
Explanation: The first two digits or the last three digits are consecutive 1s. The maximum number of consecutive 1s is 3.
Leetcode-cn.com 2021-09-23
🟢 326.power-of-three
🏷️ Tags
#recursion #math
Description
给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回
整数
Example
🟢 326.power-of-three
🏷️ Tags
#recursion #math
Description
给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回
true ;否则,返回 false 。整数
n 是 3 的幂次方需满足:存在整数 x 使得 n == 3xExample
输入:n = 27
输出:true
Leetcode.com 2021-09-22
🟡 1239.maximum-length-of-a-concatenated-string-with-unique-characters
🏷️ Tags
#bit_manipulation #array #string #backtracking
Description
Given an array of strings
Return the maximum possible length of
Example
🟡 1239.maximum-length-of-a-concatenated-string-with-unique-characters
🏷️ Tags
#bit_manipulation #array #string #backtracking
Description
Given an array of strings
arr. String s is a concatenation of a sub-sequence of arr which have unique characters.Return the maximum possible length of
s.Example
Input: arr = ["un","iq","ue"]
Output: 4
Explanation: All possible concatenations are "","un","iq","ue","uniq" and "ique".
Maximum length is 4.
Leetcode.com 2021-09-23
🟡 1328.break-a-palindrome
🏷️ Tags
#greedy #string
Description
Given a palindromic string of lowercase English letters
Return the resulting string. If there is no way to replace a character to make it not a palindrome, return an empty string.
A string
Example
🟡 1328.break-a-palindrome
🏷️ Tags
#greedy #string
Description
Given a palindromic string of lowercase English letters
palindrome, replace exactly one character with any lowercase English letter so that the resulting string is not a palindrome and that it is the lexicographically smallest one possible.Return the resulting string. If there is no way to replace a character to make it not a palindrome, return an empty string.
A string
a is lexicographically smaller than a string b (of the same length) if in the first position where a and b differ, a has a character strictly smaller than the corresponding character in b. For example, "abcc" is lexicographically smaller than "abcd" because the first position they differ is at the fourth character, and 'c' is smaller than 'd'.Example
Input: palindrome = "abccba"
Output: "aaccba"
Explanation: There are many ways to make "abccba" not a palindrome, such as "zbccba", "aaccba", and "abacba".
Of all the ways, "aaccba" is the lexicographically smallest.
Leetcode-cn.com 2021-09-25
🟡 583.delete-operation-for-two-strings
🏷️ Tags
#string #dynamic_programming
Description
给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。
Example
🟡 583.delete-operation-for-two-strings
🏷️ Tags
#string #dynamic_programming
Description
给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。
Example
输入: "sea", "eat"
输出: 2
解释: 第一步将"sea"变为"ea",第二步将"eat"变为"ea"
Leetcode.com 2021-09-24
🟢 1137.n-th-tribonacci-number
🏷️ Tags
#memoization #math #dynamic_programming
Description
The Tribonacci sequence Tn is defined as follows:
T0 = 0, T1 = 1, T2 = 1, and Tn+3 = Tn + Tn+1 + Tn+2 for n >= 0.
Given
Example
🟢 1137.n-th-tribonacci-number
🏷️ Tags
#memoization #math #dynamic_programming
Description
The Tribonacci sequence Tn is defined as follows:
T0 = 0, T1 = 1, T2 = 1, and Tn+3 = Tn + Tn+1 + Tn+2 for n >= 0.
Given
n, return the value of Tn.Example
Input: n = 4
Output: 4
Explanation:
T_3 = 0 + 1 + 1 = 2
T_4 = 1 + 1 + 2 = 4
Leetcode-cn.com 2021-09-26
🟡 371.sum-of-two-integers
🏷️ Tags
#bit_manipulation #math
Description
给你两个整数
Example
🟡 371.sum-of-two-integers
🏷️ Tags
#bit_manipulation #math
Description
给你两个整数
a 和 b ,不使用 运算符 + 和 - ,计算并返回两整数之和。Example
输入:a = 1, b = 2
输出:3
Leetcode.com 2021-09-25
🔴 1293.shortest-path-in-a-grid-with-obstacles-elimination
🏷️ Tags
#breadth_first_search #array #matrix
Description
You are given an
Return the minimum number of steps to walk from the upper left corner
Example
🔴 1293.shortest-path-in-a-grid-with-obstacles-elimination
🏷️ Tags
#breadth_first_search #array #matrix
Description
You are given an
m x n integer matrix grid where each cell is either 0 (empty) or 1 (obstacle). You can move up, down, left, or right from and to an empty cell in one step.Return the minimum number of steps to walk from the upper left corner
(0, 0) to the lower right corner (m - 1, n - 1) given that you can eliminate at most k obstacles. If it is not possible to find such walk return -1.Example
Input:
grid =
[[0,0,0],
[1,1,0],
[0,0,0],
[0,1,1],
[0,0,0]],
k = 1
Output: 6
Explanation:
The shortest path without eliminating any obstacle is 10.
The shortest path with one obstacle elimination at position (3,2) is 6. Such path is (0,0) -> (0,1) -> (0,2) -> (1,2) -> (2,2) -> (3,2) -> (4,2).