Coding Everyday
给你一个下标从 0 开始的字符串 word
,长度为 n
,由从 0
到 9
的数字组成。另给你一个正整数 m
。
word
的 可整除数组 div
是一个长度为 n
的整数数组,并满足:
- 如果
word[0,...,i]
所表示的 数值 能被
m
整除,div[i] = 1
- 否则,
div[i] = 0
返回 word
的可整除数组。
示例 1:
示例 2:
提示:
1 <= n <= 105
word.length == n
word
由数字 0
到 9
组成
1 <= m <= 109
Code
240307
给你两个正整数:n
和 target
。
如果数组 nums
满足下述条件,则称其为
美丽数组 。
nums.length == n
.
nums
由两两互不相同的正整数组成。
- 在范围
[0, n-1]
内,不存在 两个
不同 下标 i
和 j
,使得
nums[i] + nums[j] == target
。
返回符合条件的美丽数组所可能具备的 最小
和,并对结果进行取模 109 + 7
。
示例 1:
示例 2:
示例 3:
提示:
1 <= n <= 109
1 <= target <= 109
Code1
240308
超时,n=1000000000
target=1000000000
。
Code2
240308
数学题,优化成O(1)
了。
给你一个整数数组 nums
和一个 正 整数
k
。你可以选择数组的任一 子序列
并且对其全部元素求和。
数组的 第 k 大和 定义为:可以获得的第 k
个 最大 子序列和(子序列和允许出现重复)
返回数组的 第 k 大和 。
子序列是一个可以由其他数组删除某些或不删除元素排生而来的数组,且派生过程不改变剩余元素的顺序。
注意:空子序列的和视作 0
。
示例 1:
示例 2:
提示:
n == nums.length
1 <= n <= 105
-109 <= nums[i] <= 109
1 <= k <= min(2000, 2n)
Code
240309
超时,时间复杂度\(O(nk)\)。
Code2
230309
做不来了。。。
给你一个字符串 title
,它由单个空格连接一个或多个单词组成,每个单词都只包含英文字母。请你按以下规则将每个单词的首字母
大写 :
- 如果单词的长度为
1
或者 2
,所有字母变成小写。
- 否则,将单词首字母大写,剩余字母变成小写。
请你返回 大写后 的 title
。
示例 1:
示例 2:
示例 3:
Code
240311
给你一个下标从 0 开始、大小为 m x n
的矩阵 grid
,矩阵由若干 正 整数组成。
你可以从矩阵第一列中的 任一
单元格出发,按以下方式遍历 grid
:
- 从单元格
(row, col)
可以移动到
(row - 1, col + 1)
、(row, col + 1)
和
(row + 1, col + 1)
三个单元格中任一满足值
严格 大于当前单元格的单元格。
返回你在矩阵中能够 移动 的 最大
次数。
示例 1:
示例 2:
提示:
m == grid.length
n == grid[i].length
2 <= m, n <= 1000
4 <= m * n <= 105
1 <= grid[i][j] <= 106
Code
240316
给定一个整数数组 nums
,处理以下类型的多个查询:
- 计算索引
left
和 right
(包含
left
和 right
)之间的 nums
元素的
和 ,其中 left <= right
实现 NumArray
类:
NumArray(int[] nums)
使用数组 nums
初始化对象
int sumRange(int i, int j)
返回数组 nums
中索引 left
和 right
之间的元素的
总和 ,包含 left
和 right
两点(也就是
nums[left] + nums[left + 1] + ... + nums[right]
)
示例 1:
提示:
1 <= nums.length <= 104
-105 <= nums[i] <= 105
0 <= i <= j < nums.length
- 最多调用
104
次 sumRange
方法
Code
240318