C/C++每日一练(20230422)

news2024/11/15 21:45:24

目录

1. 存在重复元素  🌟

2. 组合总和  🌟🌟

3. 给表达式添加运算符  🌟🌟🌟

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


1. 存在重复元素

给定一个整数数组,判断是否存在重复元素。

如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。

示例 1:

输入: [1,2,3,1]
输出: true

示例 2:

输入: [1,2,3,4]
输出: false

示例 3:

输入: [1,1,1,3,3,4,3,2,4,2]
输出: true

出处:

https://edu.csdn.net/practice/26235228

代码:

#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
    bool containsDuplicate(vector<int> &nums)
    {
        if (nums.empty())
        {
            return false;
        }
        sort(nums.begin(), nums.begin() + nums.size());
        for (int i = 0; i < nums.size() - 1; i++)
        {
            if (nums[i] == nums[i + 1])
            {
                return true;
            }
        }
        return false;
    }
};
int main()
{
	Solution s;
    vector<int> nums = {1,2,3,1};
	cout << (s.containsDuplicate(nums) ? "true" : "false") << endl;
    nums = {1,2,3,4};
	cout << (s.containsDuplicate(nums) ? "true" : "false") << endl;
    nums = {1,1,1,3,3,4,3,2,4,2};
	cout << (s.containsDuplicate(nums) ? "true" : "false") << endl;

	return 0;
}

输出:

true
false
true


2. 组合总和

给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。

candidates 中的数字可以无限制重复被选取。

说明:

  • 所有数字(包括 target)都是正整数。
  • 解集不能包含重复的组合。 

示例 1:

输入:candidates = [2,3,6,7], target = 7,
输出:[[7],[2,2,3]]

示例 2:

输入:candidates = [2,3,5], target = 8,
输出:[[2,2,2,2],[2,3,3],[3,5]]

提示:

  • 1 <= candidates.length <= 30
  • 1 <= candidates[i] <= 200
  • candidate 中的每个元素都是独一无二的。
  • 1 <= target <= 500

以下程序实现了这一功能,请你填补空白处内容:

···c++
#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
    vector<vector<int>> combinationSum(vector<int> &candidates, int target)
    {
        vector<vector<int>> res;
        dfs(candidates, 0, target, res);
        return res;
    }
private:
    vector<int> stack;
    void dfs(vector<int> &candidates, int start, int target, vector<vector<int>> &res)
    {
        if (target < 0)
        {
            return;
        }
        else if (target == 0)
        {
            res.push_back(stack);
        }
        else
        {
            for (int i = start; i < candidates.size(); i++)
            {
                stack.push_back(candidates[i]);
                _____________________________;
                stack.pop_back();
            }
        }
    }
};
```

出处:

https://edu.csdn.net/practice/26235229

代码:

#include <bits/stdc++.h>
using namespace std;

class Solution
{
public:
    vector<vector<int>> combinationSum(vector<int> &candidates, int target)
    {
        vector<vector<int>> res;
        dfs(candidates, 0, target, res);
        return res;
    }
private:
    vector<int> stack;
    void dfs(vector<int> &candidates, int start, int target, vector<vector<int>> &res)
    {
        if (target < 0)
        {
            return;
        }
        else if (target == 0)
        {
            res.push_back(stack);
        }
        else
        {
            for (int i = start; i < candidates.size(); i++)
            {
                stack.push_back(candidates[i]);
                dfs(candidates, i, target - candidates[i], res);
                stack.pop_back();
            }
        }
    }
};

string ArrayToString(vector<int> arr){
	string res = "[";
	int size = arr.size();
	for (int i = 0; i < size; i++) {
		res += to_string(arr[i]);
		if (i != size-1) {
			res += ",";
		}
	}
	return res + "]";
}

void PrintArrays(vector<vector<int>> vect){
	cout << "[";
	int size = vect.size();
	for (int i = 0; i < size; i++) {
		cout << ArrayToString(vect[i]);
		if (i != size-1) {
			cout << ",";
		}
	}
	cout << "]" << endl;
}

int main()
{
	Solution s;
    vector<int> candidates = {2,3,6,7};
    PrintArrays(s.combinationSum(candidates, 7));
    candidates = {2,3,5};
    PrintArrays(s.combinationSum(candidates, 8));

	return 0;
}

输出:

[[2,2,3],[7]]
[[2,2,2,2],[2,3,3],[3,5]]


3. 给表达式添加运算符

给定一个仅包含数字 0-9 的字符串 num 和一个目标值整数 target ,在 num 的数字之间添加 二元 运算符(不是一元)+- 或 * ,返回所有能够得到目标值的表达式。

示例 1:

输入: num = "123", target = 6
输出: ["1+2+3", "1*2*3"] 

示例 2:

输入: num = "232", target = 8
输出: ["2*3+2", "2+3*2"]

示例 3:

输入: num = "105", target = 5
输出: ["1*0+5","10-5"]

示例 4:

输入: num = "00", target = 0
输出: ["0+0", "0-0", "0*0"]

示例 5:

输入: num = "3456237490", target = 9191
输出: []

提示:

  • 1 <= num.length <= 10
  • num 仅含数字
  • -2^31 <= target <= 2^31 - 1

出处:

https://edu.csdn.net/practice/26235230

代码:

#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
    vector<string> addOperators(string num, int target)
    {
        vector<string> res;
        addOperatorsDFS(num, target, 0, 0, "", res);
        return res;
    }
    void addOperatorsDFS(string num, int target, long long diff, long long curNum, string out, vector<string> &res)
    {
        if (num.size() == 0 && curNum == target)
            res.push_back(out);
        for (int i = 1; i <= num.size(); ++i)
        {
            string cur = num.substr(0, i);
            if (cur.size() > 1 && cur[0] == '0')
                return;
            string next = num.substr(i);
            if (out.size() > 0)
            {
                addOperatorsDFS(next, target, stoll(cur), curNum + stoll(cur), out + "+" + cur, res);
                addOperatorsDFS(next, target, -stoll(cur), curNum - stoll(cur), out + "-" + cur, res);
                addOperatorsDFS(next, target, diff * stoll(cur), (curNum - diff) + diff * stoll(cur), out + "*" + cur, res);
            }
            else
                addOperatorsDFS(next, target, stoll(cur), stoll(cur), cur, res);
        }
    }
};

string ArrayToString(vector<string> arr){
	string res = "[";
	int size = arr.size();
	for (int i = 0; i < size; i++) {
		res += arr[i];
		if (i != size-1) {
			res += ",";
		}
	}
	return res + "]";
}

int main()
{
	Solution s;
    string num = "123";
    cout << ArrayToString(s.addOperators(num, 6)) << endl;
    num = "232";
    cout << ArrayToString(s.addOperators(num, 8)) << endl;
    num = "105";
    cout << ArrayToString(s.addOperators(num, 5)) << endl;
    num = "00";
    cout << ArrayToString(s.addOperators(num, 0)) << endl;
    num = "3456237490";
    cout << ArrayToString(s.addOperators(num, 9191)) << endl;
    num = "3236";
    cout << ArrayToString(s.addOperators(num, 24)) << endl;

	return 0;
}

输出:

[1+2+3,1*2*3]
[2+3*2,2*3+2]
[1*0+5,10-5]
[0+0,0-0,0*0]
[]
[3*2+3*6,3*2*3+6]


🌟 每日一练刷题专栏 🌟

持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力! 

🌟 收藏,你的青睐是我努力的方向! 

评论,你的意见是我进步的财富!  

 主页:https://hannyang.blog.csdn.net/

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/446881.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java基于J2EE的学生宿舍信息管理系统

本目 录 摘 要 I ABSTRACT II 第一章 绪论 1 1.1课题研究背景 1 1.2课题的目的和意义 1 1.3开发工具及简介 2 1.3.1开发工具 2 1.3.2 JSP技术 3 1.3.3 JavaScript 4 第二章 需求分析 4 2.1可行性分析 4 2.1.1技术的可行性 4 2.1.2经济的…

Faster RCNN系列1——Anchor生成过程

Faster RCNN系列&#xff1a; Faster RCNN系列1——Anchor生成过程 Faster RCNN系列2——RPN的真值与预测值概述 Faster RCNN系列3——RPN的真值详解与损失值计算 Faster RCNN系列4——生成Proposal与RoI Faster RCNN系列5——RoI Pooling与全连接层 一、RPN模块概述 RPN模块…

jsp946+java物流信息管理平台-sqlserver

本系统是一个独立的系统&#xff0c;用来解决物流信息信息的管理问题。采用JSP技术构建了一个有效而且实用的物流信息信息管理平台&#xff0c;目的是为高效地完成对物流信息信息的管理。 1、内部办公功能&#xff1a;包含工作计划、通告管理、公文管理&#xff1b; 包括可以…

手机录音误删怎么恢复?恢复录音,就这么简单!

案例&#xff1a;手机录音删除了还能恢复吗&#xff1f; 【友友们&#xff0c;苹果手机录音删除了还可以恢复吗&#xff1f;里面有一些关于会议记录的录音&#xff0c;不小心被我删了&#xff0c;有哪些方法可以快速恢复录音文件&#xff1f;】 如果您在使用iPhone手机录音时误…

Python小姿势 - ### Python之禅

Python之禅 Python之禅&#xff08;The Zen of Python&#xff09;是Python之父Guido van Rossum所著的一篇文章&#xff0c;总结了Python语言的哲学。 文章开头写道&#xff1a; Beautiful is better than ugly. Explicit is better than implicit. Simple is better than com…

代码随想录--字符串--反转字符串题型

反转字符串 不能给另外的数组分配额外的空间&#xff0c;你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 我们直接用双指针&#xff0c;一个指头一个指尾&#xff0c;swap交换&#xff0c;然后同时往中间走一步再进入循环交换即可。 反转字符串II 这道题我们容…

linux(18.04)编译安装python3.6的全过程,pip python不与linux系统环境混乱

因为使用要求&#xff0c;使得我需要在linux环境下安装一个独立的python环境&#xff0c;不干扰其他环境。 一&#xff0c;下载python资源包 两种下载方式二选一&#xff0c;谁快选谁 linux下载&#xff1a; 不同的python版本&#xff0c;安装过程是一样的&#xff0c;下载…

蒙层禁止页面滚动

学习链接&#xff1a;蒙层禁止页面滚动的方案 <!DOCTYPE html> <html> <head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width, initial-scale1"><title>蒙层禁止页面滚动的方案<…

Map Reduce高级篇:Join-Reduce

Join关联操作 背景 在实际的数据库应用中&#xff0c;我们经常需要从多个数据表中读取数据&#xff0c;这时就可以使用SQL语句中的连接&#xff08;JOIN&#xff09;&#xff0c;在两个或者多个数据表中查询数据。在使用MapReduce框架进行数据查询的过程中&#xff0c;也会涉…

React Refs

React 支持一种非常特殊的属性 Ref &#xff0c;可以用来绑定到 render() 输出的任何组件上。 这个特殊的属性允许引用 render() 返回的相应的支撑实例 &#xff08; backing instance &#xff09;。这样就可以确保在任何时间总是拿到正确的实例。 使用&#xff1a; 绑定一…

Linux基础—DHCP原理与配置

Linux基础—DHCP原理与配置 一、DHCP工作原理1.了解DHCP服务使用DHCP的优势DHCP的分配方式 2.DHCP的IP地白动获取工作原理: 二、配置DHCP服务器三、DHCP场景应用实验 一、DHCP工作原理 1.了解DHCP服务 DHCP(Dynamic HostConfiguration Protocol&#xff0c;动态主机配置协议) …

网络基础入门

目录 网络存在的意义 网络发展 网络在哪里&#xff1f; 网络是分层的 理解分层 软件可以分层 网络协议栈也是层状结构 认识协议 协议是什么 协议分层 网络传输需要解决的四个问题 OSI七层模型&#xff08;了解为主&#xff09; TCP/IP五层&#xff08;或四层&…

LVS --一文精通

目录 dns解析 下一跳机制 LVS:NAT LVS: IP TUN隧道 LVS: DR DR> TUN > NAT > FULL NAT dns解析 DNS本地域名服务器&#xff0c;当用户访问一个网址&#xff0c;计算机就会提出域名解析请求&#xff0c;并发给本地域名服务器&#xff0c;本地域名服务器收到请求…

你真正了解低代码么?(国内低代码平台状况分析)

■ 写在前面■ 低代码产品如何分类&#xff0c;90% 的人都没有搞清楚■ 低代码平台如何比较&#xff1f;Point 在哪儿&#xff1f;一个比喻大家全听懂■ “拼”出来的低代码平台&#xff0c;真的好用吗&#xff1f;■ 推荐一款 C 端低代码产品 ■ 写在前面 都说技术是生产力&a…

每日一个小技巧:1分钟告诉你如何给黑白照片上色

你是否有过这样的经历&#xff1a;在家翻出爷爷奶奶的旧照片时&#xff0c;发现它们都是黑白色的&#xff0c;无法体现当时的真实色彩&#xff1f;由于一些老照片的拍摄时间较早&#xff0c;因此都是以黑白形式存在的&#xff0c;这样的照片不仅影响观感&#xff0c;还抑制了我…

SAS学习第11章:试验设计

试验设计必须遵循以下原则&#xff1a;重复、随机、局部控制。 重复即每个处理都要有至少2个试验单位&#xff0c;目的是估计试验误差&#xff0c;降低试验误差。若只有1个观测值&#xff0c;无法估计试验误差。平均数抽样误差估计值大小与重复次数的平方成反比&#xff0c;适…

Linux基础——DNS服务器原理及搭建

Linux基础——DNS服务器原理及搭建 一、DNS服务器原理1.DNS系统分布式数据结构2.DNS查询类型3.DNS服物器类型 二、搭建DNS域名解析服务器步骤1.安装bind软件包2. 查看需要修改的配置文件所在路径3. 修改主配置文件4. 修改区域配置文件&#xff0c;添加正向区域配置5.配置正向区…

量化择时——LSTM深度学习量化择时(第1部分—因子测算)

之前我们尝试使用SVM&#xff0c;将时序数据转为横截面的数据&#xff0c;使用机器学习的方法进行预测 量化择时——SVM机器学习量化择时&#xff08;第1部分—因子测算&#xff09;&#xff1a; https://blog.csdn.net/weixin_35757704/article/details/129909497 但是因为股…

轻松解决ChatGPT网络报错,畅享沟通

ChatGPT的确很不错&#xff0c;无论是在什么岗位&#xff0c;使用它都可以让工作的你提升效率&#xff0c;可是我们经常会遇到一个神奇的网络报错&#xff08;当我们一会不使用就来个这样的效果提示&#xff09;&#xff0c;是不是头大&#xff1f; 好了&#xff0c;开始进入正…

实验二:华为云ModelArts订阅口罩检测模型

华为云ModelArts订阅口罩检测模型 1、通过实验提示的网址进入口罩检测模型&#xff1b;拖动窗口找到并点击订阅按钮&#xff1b;勾选温馨提示中复选框内容&#xff1b; 2、点击红色“前往控制台”按钮&#xff0c;选择华北-北京四&#xff0c;并确定&#xff1b; 3、等待同步完…