C/C++每日一练(20230505) 扩展兔子数列、删除重复项、寻找最小值

news2024/11/23 2:23:32

目录

1. 求尾数与常数之和  🌟

2. 删除有序数组中的重复项  🌟

3. 寻找旋转排序数组中的最小值  🌟🌟

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


1. 求尾数与常数之和

数列的前3项都为1,从第4项开始,每项都是其前3项的和:1, 1, 1, 3, 5, 9, 17, … 请你编程求出数列第N项的4位尾数与90000之和。输入一个正整数N,输出所求的和。

出处:

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

代码:

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <iomanip>
#include <algorithm>
#include <set>
using namespace std;
#define NUM 10000
long long dp[1000000];
int main(){
    int n;
    cin>>n;
    dp[1]=1;
    dp[2]=1;
    dp[3]=1;
    for(int i=4;i<=n;i++){
        dp[i]=dp[i-1]+dp[i-2]+dp[i-3];
    }
    cout<<dp[n]<<endl;
    long long x=dp[n]%NUM+90000;
    cout<<x;
    system("pause");
    return 0;
}

输出:

略,本质就是扩展的斐波那契数列。


2. 删除有序数组中的重复项

给你一个有序数组 nums ,​ 请你 原地 删除 ​重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。

不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

说明:

为什么返回数值是整数,但输出的答案是数组呢?

请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。

你可以想象内部操作如下:

// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝
int len = removeDuplicates(nums);

// 在函数里修改输入数组对于调用者是可见的。 // 根据你的函数返回的长度, 它会打印出数组中 该长度范围内 的所有元素。 for (int i = 0; i < len; i++) {     print(nums[i]); }

示例 1:

输入:nums = [1,1,2]
输出:2, nums = [1,2]
解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。

示例 2:

输入:nums = [0,0,1,1,1,2,2,3,3,4]
输出:5, nums = [0,1,2,3,4]
解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4 。不需要考虑数组中超出新长度后面的元素。

提示:

  • 0 <= nums.length <= 3 * 10^4
  • -10^4 <= nums[i] <= 10^4
  • nums 已按升序排列

出处:

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

代码:

#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
    int removeDuplicates(vector<int> &nums)
    {
        if (nums.size() == 0)
        {
            return 0;
        }
        int count = 1;
        for (int i = 1; i < nums.size(); i++)
        {
            if (nums[i - 1] != nums[i])
            {
                nums[count++] = nums[i];
            }
        }
        return count;
    }
};

int main(){
	Solution s;
    vector<int> nums = {1,1,2};
    cout << s.removeDuplicates(nums) << endl;
    nums = {0,0,1,1,1,2,2,3,3,4};
    cout << s.removeDuplicates(nums) << endl;
    return 0;
}

输出:

2
5


3. 寻找旋转排序数组中的最小值

已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:

  • 若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]
  • 若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]

注意,数组 [a[0], a[1], a[2], ..., a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], ..., a[n-2]] 。

给你一个元素值 互不相同 的数组 nums ,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的 最小元素 。

示例 1:

输入:nums = [3,4,5,1,2]
输出:1
解释:原数组为 [1,2,3,4,5] ,旋转 3 次得到输入数组。

示例 2:

输入:nums = [4,5,6,7,0,1,2]
输出:0
解释:原数组为 [0,1,2,4,5,6,7] ,旋转 4 次得到输入数组。

示例 3:

输入:nums = [11,13,15,17]
输出:11
解释:原数组为 [11,13,15,17] ,旋转 4 次得到输入数组。

提示:

  • n == nums.length
  • 1 <= n <= 5000
  • -5000 <= nums[i] <= 5000
  • nums 中的所有整数 互不相同
  • nums 原来是一个升序排序的数组,并进行了 1 至 n 次旋转

出处:

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

代码:

#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
    int findMin(vector<int> &nums)
    {
        int left = 0, right = nums.size() - 1;
        int mid = (left + right) / 2;
        while (left < right)
        {
            mid = (left + right) / 2;
            if (nums[mid] > nums[right])
                left = mid + 1;
            else
                right = mid;
        }
        return nums[left];
    }
};

int main(){
	Solution s;
    vector<int> nums = {3,4,5,1,2};
    cout << s.findMin(nums) << endl;
    nums = {4,5,6,7,0,1,2};
    cout << s.findMin(nums) << endl;
    nums = {11,13,15,17};
    cout << s.findMin(nums) << endl;
    return 0;
}

输出:

1
0
11


🌟 每日一练刷题专栏 🌟

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

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

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

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

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

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏

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

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

相关文章

Selenium原理以及Python从零实现

Selenium简介 Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。支持的浏览器包括IE&#xff08;7, 8, 9, 10, 11&#xff09;&#xff0c;Mozilla Firefox&#xff0c;Safari&#xff0c;Google Chrome&a…

使用zabbix监控Windows指定服务| zabbix Windows service filter

环境&#xff1a;Centos Zabbix6 问题&#xff1a;使用自带的windows服务监控带出了所有的服务&#xff0c;只想监控特定的服务 解决办法&#xff1a;使用正则表达式过滤 背景&#xff1a;在Zabbix6中&#xff0c;使用自带的windows服务监控带出了所有的服务&#xff0c;只想监…

数据分析如何入门?这4类 Excel 函数助你从小白到大神

Excel是我们从事数据分析的朋友们&#xff0c;会经常用到的最基本的工具。而Excel函数又是Excel中最为重要的、最为常用的知识点&#xff0c;我们必须要掌握。 基于此&#xff0c;今天就分类为大家讲述最为常用的Excel函数。 逻辑函数 1、and 2、or 3、if 当使用了if(…

Leetcode326. 3 的幂

Every day a leetcode 题目来源&#xff1a;326. 3 的幂 相似题目&#xff1a;342. 4的幂 解法1&#xff1a;递归 代码&#xff1a; /** lc appleetcode.cn id326 langcpp** [326] 3 的幂*/// lc codestart class Solution { public:bool isPowerOfThree(int n){if (n <…

【软考高项笔记】第1章 信息化发展1.4 数字中国

1.4 数字中国 我国信息化发展的主旋律 迎接数据时代&#xff0c;激活数据要素的潜能&#xff0c;推进网络强国建设&#xff0c;加快建设数据经济、数据社会、数据政府、以数字化转型整体驱动生产方式&#xff0c;生活方式和治理方式变革1.4.1 数字经济 新技术经济范式&#xf…

港联证券|人工智能走高,掌阅科技三连板,海天瑞声等大幅拉升

人工智能概念5日盘中发力走高&#xff0c;截至发稿&#xff0c;光云科技“20cm”涨停&#xff0c;彩讯股份、云从科技涨超13%&#xff0c;汉王科技、焦点科技、掌阅科技、竞业达等涨停&#xff0c;世纪天鸿、海天瑞声涨超8%。 值得注意的是&#xff0c;掌阅科技已接连三个交易日…

BM5 合并k个已排序链表

合并k个已排序的链表_牛客题霸_牛客网 (nowcoder.com) class Solution {public://两个有序链表合并函数ListNode* Merge2(ListNode* pHead1, ListNode* pHead2) {if(!pHead1) return pHead2;if(!pHead2) return pHead1;if(pHead1->val < pHead2->val){pHead1->next…

Linux搭建我的世界服务器 + 公网远程联机教程「不需要公网IP」

文章目录 前言1. 安装JAVA2. MCSManager安装3.局域网访问MCSM4.创建我的世界服务器5.局域网联机测试6.安装cpolar内网穿透7. 配置公网访问地址8.远程联机测试9. 配置固定远程联机端口地址9.1 保留一个固定tcp地址9.2 配置固定公网TCP地址9.3 使用固定公网地址远程联机 转载自内…

Linux服务器安装部署MongoDB数据库 - 无公网IP远程连接

目录 前言 1. 配置Mongodb源 2. 安装MongoDB 3. 局域网连接测试 4. 安装cpolar内网穿透 5. 配置公网访问地址 6. 公网远程连接 7. 固定连接公网地址 8. 使用固定地址连接 转载自Cpolar Lisa文章&#xff1a;Linux服务器安装部署MongoDB数据库 - 无公网IP远程连接「内网…

IP库新增10多个功能IP

本文涵盖了从初学者到专家级别的FPGA 项目及IP。所有 FPGA 项目都带有开源的源代码。 IP库简介 一直想做一个可以供大家学习、使用的开源IP库&#xff0c;类似OpenCores&#xff0c;OC上IP在领域内的IP很少&#xff0c;通用性强一点&#xff0c;所以作为OC的“补充”&#xff0…

[架构之路-182]-《软考-系统分析师》-19- 系统可靠性分析与设计 - 概览

前言&#xff1a; 可靠性工程是研究产品生命周期中故障的发生、发展规律&#xff0c;达到预防故障&#xff0c;消灭故 障&#xff0c;提高产品可用性的工程技术。 信息系统的可靠性是指系统在满足一定条件的应用环境中能够正常工作的能力&#xff0c;可以按一般工程系统的可靠性…

【KVM虚拟化】· virsh管理命令

目录 &#x1f341;libvirt架构概述 &#x1f341;使用virsh管理虚拟机 &#x1f342;常用命令总结 &#x1f341;kvm基本功能管理 &#x1f342;帮助命令 &#x1f342;KVM的配置文件存放目录 &#x1f342;查看虚拟机状态 &#x1f342;虚拟机关机与开机 &#x1f342;强制虚…

GUI编程(一)

1、简介 GUI的核心技术&#xff1a;Swing、 AWT 1、外观不太美观&#xff0c;组件数量偏少 2、运行需要JRE环境 为什么我们要学习&#xff1f; 组件(JTable,JList等)很多都是MVC的经典示范&#xff0c;学习也可以了解mvc架构。工作时,也有可能遇见需要维护N年前awt/swing写的…

360SEO 如何使用360分析工具来了解你的受众

随着数字化时代的到来&#xff0c;越来越多的企业和个人开始关注自己的受众&#xff0c;以便更好地满足他们的需求。在这个过程中&#xff0c;数据分析工具发挥了越来越重要的作用。其中&#xff0c;360分析工具是一种非常受欢迎的工具&#xff0c;它可以帮助你了解你的受众。 …

Linux Shell编程面试题

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

HTTP的method方法 GET POST PUT DELETE HEAD OPTIONS CONNECT PATCH TRACE

HTTP的method方法 GET POST PUT DELETE HEAD OPTIONS CONNECT PATCH TRACE GET 向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据&#xff0c;而不应当被用于产生“副作用”的操作中&#xff0c;例如在Web Application中。其中一个原因是GET可能会被网络蜘蛛等随意…

分别利用seaborn和matplotlib绘制两组数据(国家统计局居民消费指数和鸢尾花数据集)的图表

一、居民消费指数 1. 数据来源 使用的数据来源网站&#xff1a;国家统计局 数据网站连接&#xff1a;https://data.stats.gov.cn/easyquery.htm?cnA01 2.下载数据 点击下载按钮&#xff1a; 注册一个国家统计局的账号&#xff0c;然后自动登录跳转到数据页&#xff0c;…

Ae:橡皮擦工具

橡皮擦工具 Eraser Tool 快捷键&#xff1a;Ctrl B 橡皮擦工具 Eraser Tool在工作原理上同 Ae 中的其它绘画工具&#xff08;画笔、仿制图章&#xff09;工具基本一致&#xff0c;都是通过绘制路径&#xff0c;然后基于此路径进行描边&#xff08;可统称为“绘画描边”&…

黑马在线教育数仓实战9

2.6 数据清洗转换操作 ​ 目的: 主要是用于从ODS以及DIM层 将数据灌入到DWM层操作 生成学生出勤状态信息表 涉及表: course_table_upload_detail: 日志课程明细表 (课表) (维度表) tbh_student_signin_record: 学生打卡记录表 (事实表) tbh_class_time_ta…

Windows下的RabbitMq安装(图文教学)

目录 前言一、安装Erlang1、下载地址&#xff1a; https://www.erlang.org/downloads2、安装3、配置环境变量4、测试安装 二、安装RabbitMq1、下载2、安装3、常用命令 参考 前言 RabbitMQ服务端代码是使用并发式语言Erlang编写的&#xff0c;安装Rabbit MQ的前提是安装Erlang …