LeetCode 345. 反转字符串中的元音字母
原题链接
题目描述
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
提示:元音字母不包含字母 “y” 。
样例
输入样例1:
"hello"
输出样例1:
"holle"
输入样例2:
"leetcode"
输出样例2:
"leotcede"
思路
双指针扫描。
用两个指针,从首尾往中间扫描,扫描过程中跳过非元音字母,然后交换两个指针指向的字符。直到两个指针相遇为止。
时间复杂度:每个字符只会被扫描一遍。时间复杂度是 O(n)O(n)O(n) 。
代码
C++
class Solution {
public:
string words = "aeiouAEIOU";
string reverseVowels(string s) {
for ( int i = 0, j = s.size() - 1; i < j; i++, j-- )
{
while ...
AcWing 3807. 构造字符串
原题链接
题目描述
给定两个整数 nnn 和 kkk,请你构造一个长度为 nnn 的字符串 sss。
字符串 sss 需满足:
sss 由前 kkk 个小写字母构成,且前 kkk 个小写字母均在 sss 中出现至少一次。
前 kkk 个小写字母中,出现次数最少的字母的出现的次数尽可能多。
输出任意满足条件的字符串 sss。
输入格式
第一行包含整数 TTT,表示共有 TTT 组测试数据。
每组数据占一行,包含两个整数 nnn 和 kkk。
输出格式
每组数据输出一个结果,表示满足条件的字符串 sss。
如果答案不唯一,输出任意合理方案均可。
数据范围
1≤T≤1001≤T≤1001≤T≤100
1≤n≤1001≤n≤1001≤n≤100
1≤k≤min(n,26)1≤k≤min(n,26)1≤k≤min(n,26)
样例
输入样例:
3
7 3
4 4
6 2
输出样例:
cbcacab
abcd
baabab
思路
题目要求出现次数最小的字母,出现次数尽可能多,只要尽可能平均的分配字母即可。
题目至少需要 kkk 个不同的字母。那么每个字母都可以 ...
LeetCode 541. 反转字符串 II
原题链接
题目描述
给定一个字符串 sss 和一个整数 kkk,从字符串开头算起,每 2k2k2k 个字符反转前 kkk 个字符。
如果剩余字符少于 kkk 个,则将剩余字符全部反转。
如果剩余字符小于 2k2k2k 但大于或等于 kkk 个,则反转前 kkk 个字符,其余字符保持原样。
数据范围
1≤s.length≤1041 \le s.length \le 10^41≤s.length≤104,
sss 仅由小写英文组成,
1≤k≤1041 \le k \le 10^41≤k≤104。
样例
输入样例1:
s = "abcdefg", k = 2
输出样例1:
"bacdfeg"
输入样例2:
s = "abcd", k = 2
输出样例2:
"bacd"
思路
每 2k2k2k 为一组,翻转每组的前 kkk 个字符。不足 kkk 个字符,有多少翻转多少。
枚举每组的左端点 iii 和右端点 min(i+k,n)min(i + k, n)min(i+k,n) 。( nnn ...
C++ sort排序(从小到大,从大到小)
使用 sort() 函数,需要先引入头文件:algorithm。 #include <algorithm>。
sort() 函数的模板:
/**
* @brief Sort the elements of a sequence.
* @ingroup sorting_algorithms
* @param __first An iterator.
* @param __last Another iterator.
* @return Nothing.
*
* Sorts the elements in the range @p [__first,__last) in ascending order,
* such that for each iterator @e i in the range @p [__first,__last-1),
* *(i+1)<*i is false.
*
* The relative ordering of equivalent elements is not preserve ...
Hexo使用SFTP部署到个人服务器
官方文档在这:官方文档
安装依赖
安装 hexo-deployer-sftp。
npm install hexo-deployer-sftp --save
参数
deploy:
type: sftp
host: <host>
user: <user>
pass: <password>
remotePath: [remote path]
port: [port]
privateKey: [path/to/privateKey]
passphrase: [passphrase]
agent: [path/to/agent/socket]
含义:
参数
描述
默认值
host
远程主机的地址。填ip或者域名都可以。必填。
user
远程主机的用户名。必填。
pass
远程主机的密码。可不写,与privateKey二选一。
remotePath
远程主机的目录。
/
port
远程主机的端口。
22
privateKey
本机ssh私钥的目录地址。
passphrase
...
AcWing 3802. 消灭数组
原题链接
题目描述
给定一个长度为 nnn 的数组,如果它不是非降序(非严格单调递增)的,那么就将它的前半部分或后半部分消灭。
不断重复这个消灭一半数组的过程,直至数组变为升序为止。
请问,得以幸存的数组的最大可能长度是多少?
输入格式
第一行包含整数 TTT,表示共有 TTT 组测试数据。
每组数据第一行包含整数 nnn。
第二行包含 nnn 个整数 a1,a2,…,ana_1,a_2,…,a_na1,a2,…,an,表示给定数组。
输出格式
输出幸存数组的最大可能长度。
数据范围
1≤T≤101≤T≤101≤T≤10
1≤n≤161≤n≤161≤n≤16,nnn 保证是 222 的整数次幂。
1≤ai≤1001≤a_i≤1001≤ai≤100
样例
输入样例:
3
4
1 2 2 4
8
11 12 1 2 13 14 3 4
4
7 6 5 4
输出样例:
4
2
1
思路
当当前区间为升序的时候,直接返回当前区间的长度即可。
否则递归求解当前区间的前半段和后半段,取最大值即可。
代码
C++
#include <iostream>
us ...
AcWing 3801. 最佳连续子数组
原题链接
题目描述
给定一个长度为 nnn 的数组 a1,a2,…,ana_1,a_2,…,a_na1,a2,…,an。
请你找到其中的最佳连续子数组。
最佳连续子数组需满足:
子数组内各元素的算术平均数(即所有元素之和除以元素个数)尽可能大。
满足条件 111 的前提下,子数组的长度尽可能长。
输出最佳连续子数组的长度。
输入格式
第一行包含整数 TTT,表示共有 TTT 组测试数据。
每组数据,第一行包含整数 nnn。
第二行包含 nnn 个整数 a1,a2,…,ana_1,a_2,…,a_na1,a2,…,an。
输出格式
每组数据输出一行结果,表示最佳连续子数组的长度。
数据范围
1≤T≤201≤T≤201≤T≤20
1≤n≤1051≤n≤10^51≤n≤105
0≤ai≤1090≤a_i≤10^90≤ai≤109
同一测试点内所有 nnn 的和不超过 10510^5105。
样例
输入样例:
1
5
6 1 6 6 0
输出样例:
2
思路
子数组内各元素的算术平均数(即所有元素之和除以元素个数)尽可能大:其实就是数组的最大值。
...
LeetCode 1646. 获取生成数组中的最大值
原题链接
题目描述
给你一个整数 nnn 。按下述规则生成一个长度为 n+1n + 1n+1 的数组 numsnumsnums :
nums[0]=0nums[0] = 0nums[0]=0
nums[1]=1nums[1] = 1nums[1]=1
当 2≤2∗i≤n2 \le 2 * i \le n2≤2∗i≤n 时,nums[2∗i]=nums[i]nums[2 * i] = nums[i]nums[2∗i]=nums[i]
当 2≤2∗i+1≤n2 \le 2 * i + 1 \le n2≤2∗i+1≤n 时,nums[2∗i+1]=nums[i]+nums[i+1]nums[2 * i + 1] = nums[i] + nums[i + 1]nums[2∗i+1]=nums[i]+nums[i+1]
返回生成数组 numsnumsnums 中的 最大 值。
数据范围
0≤n≤1000 \le n \le 1000≤n≤100
样例
输入样例1:
n = 7
输出样例1:
3
样例1解释:
根据规则:
nums[0]=0nums[0] = 0nu ...
LeetCode 787. K 站中转内最便宜的航班
原题链接
题目描述
有 nnn 个城市通过一些航班连接。给你一个数组 flights ,其中 flights[i]=[fromi,toi,pricei]flights[i] = [from_i, to_i, price_i]flights[i]=[fromi,toi,pricei] ,表示该航班都从城市 fromifrom_ifromi 开始,以价格 toito_itoi 抵达 priceiprice_ipricei。
现在给定所有的城市和航班,以及出发城市 src 和目的地 dst,你的任务是找到出一条最多经过 kkk 站中转的路线,使得从 srcsrcsrc 到 dstdstdst 的 价格最便宜 ,并返回该价格。 如果不存在这样的路线,则输出 −1-1−1。
数据范围
1≤n≤1001 \le n \le 1001≤n≤100
0≤flights.length≤(n∗(n−1)/2)0 \le flights.length \le (n * (n - 1) / 2)0≤flights.length≤(n∗(n−1)/2)
flights[i].length == ...
LeetCode 797. 所有可能的路径
原题链接
题目描述
给你一个有 nnn 个节点的 有向无环图(DAG),请你找出所有从节点 000 到节点 n−1n-1n−1 的路径并输出(不要求按特定顺序)
二维数组的第 iii 个数组中的单元都表示有向图中 iii 号节点所能到达的下一些节点,空就是没有下一个结点了。
译者注:有向图是有方向的,即规定了 a→ba→ba→b 你就不能从 b→ab→ab→a 。
数据范围
n == graph.length
2≤n≤152 \le n \le 152≤n≤15
0≤graph[i][j]<n0 \le graph[i][j] < n0≤graph[i][j]<n
graph[i][j]≠igraph[i][j] \not= igraph[i][j]=i(即,不存在自环)
graph[i] 中的所有元素 互不相同
保证输入为 有向无环图(DAG)
样例
输入样例1:
graph = [[1,2],[3],[3],[]]
输出样例1:
[[0,1,3],[0,2,3]]
样例1解释:
有两条路径 0 -> 1 -> 3 和 0 -> ...
