【每日编程-444期】Leetcode.942. 增减字符串匹配
给定只含 "I"(增大)或 "D"(减小)的字符串 S ,令 N = S.length。
返回 [0, 1, ..., N] 的任意排列 A 使得对于所有 i = 0, ..., N-1,都有:
如果 S[i] == "I",那么 A[i] < A[i+1]
如果 S[i] == "D",那么 A[i] > A[i+1]
样例一:
输入:"IDID"
输出:[0,4,1,3,2]
样例二:
输入:"III"
输出:[0,1,2,3]
样例三:
输入:"DDI"
输出:[3,2,2,3]
解决方法:
(1)算法的基本思想:
链接:https://leetcode-cn.com/problems/two-sum/solution/zeng-jian-zi-fu-chuan-pi-pei-by-leetcode/
来源:力扣(LeetCode)
(2)代码实现:
class Solution {
public:
vector<int> diStringMatch(string s) {
int l = 0, r = s.size();
vector<int> retval(s.size() + 1);
for(int j = 0; j < s.size(); ++j){
if(s[j] == 'I')
retval[j] = l++;
else
retval[j] = r--;
}
retval.back() = l;
return retval;
}
};
给定二叉搜索树(BST)的根节点和一个值。你需要在BST中找到节点值等于给定值的节点。返回以该节点为根的子树。如果节点不存在,则返回 NULL。
输入样例:
给定二叉搜索树:
4
/ \
2 7
/ \
1 3
和值: 2
输出样例:
2
/ \
1 3
5
,但因为没有节点值为
5
,我们应该返回
NULL
。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
TreeNode* searchBST(TreeNode* root, int val) {
}
};