
目录
1. 搜索插入位置 🌟
2. 最长有效括号 🌟🌟🌟
3. 子集 🌟🌟
🌟 每日一练刷题专栏 🌟
Golang每日一练 专栏
Python每日一练 专栏
C/C++每日一练 专栏
Java每日一练 专栏
1. 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例 1:
输入: [1,3,5,6], 5 输出: 2
示例 2:
输入: [1,3,5,6], 2 输出: 1
示例 3:
输入: [1,3,5,6], 7 输出: 4
示例 4:
输入: [1,3,5,6], 0 输出: 0
出处:
https://edu.csdn.net/practice/25855286
代码:
#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
    int searchInsert(vector<int> &nums, int target)
    {
        int lo = -1;
        int hi = nums.size();
        while (lo + 1 < hi)
        {
            int mid = lo + (hi - lo) / 2;
            if (target > nums[mid])
            {
                lo = mid;
            }
            else
            {
                hi = mid;
            }
        }
        return hi;
    }
};
int main()
{
	Solution s;
	vector<int> nums = {1,3,5,6};
	cout << s.searchInsert(nums, 5) << endl;
	cout << s.searchInsert(nums, 2) << endl;
	cout << s.searchInsert(nums, 7) << endl;
	cout << s.searchInsert(nums, 0) << endl;
	return 0;
}
输出:
2
 1
 4
 0
2. 最长有效括号
给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。
示例 1:
输入:s = "(()" 输出:2 解释:最长有效括号子串是 "()"
示例 2:
输入:s = ")()())" 输出:4 解释:最长有效括号子串是 "()()"
示例 3:
输入:s = "" 输出:0
cdd提示:
- 0 <= s.length <= 3 * 104
- s[i]为- '('或- ')'
以下程序实现了这一功能,请你填补空白处的内容:
```c++
 #include <bits/stdc++.h>
 using namespace std;
 class Solution
 {
 public:
     int longestValidParentheses(string s)
     {
         stack<int> stk;
         int invalid = -1;
         int len = 0, max_len = 0;
         for (int i = 0; i < s.length(); i++)
         {
             if (s[i] == '(')
             {
                 stk.push(i);
             }
             else
             {
                 if (stk.empty())
                 {
                     invalid = i;
                 }
                 else
                 {
                     stk.pop();
                     ___________________;
                 }
             }
         }
         return max_len;
     }
 };
 ```
出处:
https://edu.csdn.net/practice/25855287
代码:
#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
    int longestValidParentheses(string s)
    {
        stack<int> stk;
        int invalid = -1;
        int max_len = 0;
        for (int i = 0; (size_t)i < s.length(); i++)
        {
            if (s[i] == '(')
            {
                stk.push(i);
            }
            else
            {
                if (stk.empty())
                {
                    invalid = i;
                }
                else
                {
                    stk.pop();
					if (stk.empty())
					{
					    max_len = max(i - invalid, max_len);
					}
					else
					{
					    max_len = max(i - stk.top(), max_len);
					}
                }
            }
        }
        return max_len;
    }
};
int main()
{
	Solution s;
	cout << s.longestValidParentheses("(()") << endl;
	cout << s.longestValidParentheses(")()())") << endl;
	cout << s.longestValidParentheses("") << endl;
	return 0;
}
输出:
2
 4
 0
3. 子集
给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
示例 1:
输入:nums = [1,2,3] 输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
示例 2:
输入:nums = [0] 输出:[[],[0]]
提示:
- 1 <= nums.length <= 10
- -10 <= nums[i] <= 10
- nums中的所有元素 互不相同
以下程序实现了这一功能,请你填补空白处内容:
 ```c++
 #include <bits/stdc++.h>
 using namespace std;
 class Solution
 {
 public:
     vector<vector<int>> subsets(vector<int> &nums)
     {
         vector<vector<int>> res;
         dfs(nums, 0, res);
         return res;
     }
 private:
     vector<int> stack;
     void dfs(vector<int> &nums, int start, vector<vector<int>> &res)
     {
         res.push_back(stack);
         for (int i = start; i < nums.size(); i++)
         {
             ______________;
         }
     }
 };
 ```
出处:
https://edu.csdn.net/practice/25855288
代码:
#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
    vector<vector<int>> subsets(vector<int> &nums)
    {
        vector<vector<int>> res;
        dfs(nums, 0, res);
        return res;
    }
private:
    vector<int> stack;
    void dfs(vector<int> &nums, int start, vector<vector<int>> &res)
    {
        res.push_back(stack);
        for (int i = start; (size_t)i < nums.size(); i++)
        {
			stack.push_back(nums[i]);
			dfs(nums, i + 1, res);
			stack.pop_back();
        }
    }
};
string vectorToString(vector<int> vect) {
    stringstream ss;
	ss << "[";
    for (size_t i = 0; i < vect.size(); i++)
	{
        ss << to_string(vect[i]);
        ss << (i < vect.size() - 1 ? "," : "");
    }
    ss << "]";
    return ss.str();
}
string vector2DToString(vector<vector<int>> vect) {
    string res = "[";
    size_t len = vect.size();
    for (size_t i = 0; i < len; i++)
	{
        res += vectorToString(vect[i]);
        if (i+1 != len)
        	res += ",";
    }
    res += "]";
    return res;
}
int main()
{
	Solution s;
	vector<int> nums = {1,2,3};
	cout << vector2DToString(s.subsets(nums)) << endl;
	return 0;
}
输出:
[[],[1],[1,2],[1,2,3],[1,3],[2],[2,3],[3]]
🌟 每日一练刷题专栏 🌟
✨ 持续,努力奋斗做强刷题搬运工!
👍 点赞,你的认可是我坚持的动力!
🌟 收藏,你的青睐是我努力的方向!
✎ 评论,你的意见是我进步的财富!
☸ 主页:https://hannyang.blog.csdn.net/
|  | Golang每日一练 专栏 | 
|  | Python每日一练 专栏 | 
|  | C/C++每日一练 专栏 | 
|  | Java每日一练 专栏 | 



















