12.哀家要长脑子了!

 1.189. 轮转数组 - 力扣(LeetCode)

方法一:

要注意这个k是可以大于0的,所以旋转数组的时候要一直保证是在1-n的范围内:%实现

把k个元素旋转放到前面,前面n-k个元素是向后移动的。

class Solution {
public:
    void rotate(vector<int>& nums, int k) {
        int n = nums.size();
        vector<int> t(n);
        for(int i = 0; i < n; i++){
            t[(i+k)%n] = nums[i]
        }
        nums.assign(t.begin(), t.end());
    }
};

 方法二:

先把这个数组旋转倒置过来,再以第k个元素为界,分别旋d

class Solution {
    void reverse(int start, int end, vector<int> &nums){
        while(start < end){
            swap(nums[start], nums[end]);
            start++, end--;
        }
    }

public:
    void rotate(vector<int>& nums, int k) {
        int n = nums.size();
        int k %= n;
        reverse(0, n-1, nums);
        reverse(0, k-1, nums);
        reverse(k, n-1, nums);
    }
};
2. 396. 旋转函数 - 力扣(LeetCode)

 嗯。。。我只能说:数学是硬伤。。。。

F(k) = F(k-1) + sum - n*nums[n-k];

class Solution {

public:
    int maxRotateFunction(vector<int>& nums) {
        int n =nums.size();
        int sum = accumulate(nums.begin(), nums.end(), 0);
        int f = 0;
        for(int i = 0; i < n; i++){
            f += i * nums[i];
        }
        int res = f;
        for(int i = n - 1; i > 0; i--){
            f += sum - n * nums[i];
            res = max(res, f); 
        }
        return res;
    }
};
3. 645. 错误的集合 - 力扣(LeetCode)

我真的伤了。。。被自己蠢笑了 明明以前做过雷同的题目,为什么为什么还是做不出来啊,我朝立马

class Solution {
public:
    vector<int> findErrorNums(vector<int>& nums) {
        vector<int> res(2);
        sort(nums.begin(), nums.end());
        int pre = 0;
        for(int i = 0; i < nums.size(); i++){
            int now = nums[i];
            if(pre == now){
                res[0] = now;
            }
            else if(now - pre > 1){
                res[1] = pre + 1;
            }
            pre = now;
        }
        if(nums.size() != nums[nums.size() - 1]){
            res[1] = nums.size();
        }
        return res;
    }
};

是因为这个元素值是从1开始,数组下标从0开始,还要判断是不是最后一个元素重复的,我老是搞不清,我是真的不清白啊。。。。。

4. 697. 数组的度 - 力扣(LeetCode)

 

 我知道思路了,但是为什么不会实现呢,我天呢小姐姐

用三个无序map,分别是left,right,counter;遍历数组。left用来访元素第一次出现的位置,right放元素第二次出现的位置,counter放元素的度

数组的度是指元素在数组中出现最多的次数。那么这个元素本身可能是在数组里的,题目要求求与原数组度相同的最短的子数组,那么就让第一次出现的位置与最后一次出现的位置得到距离最小就好。

class Solution {
public:
    int findShortestSubArray(vector<int>& nums) {
        unordered_map<int, int> left, right, counter;
        int degree = 0;
        for(int i = 0; i < nums.size(); i++){
            if(!left.count(nums[i]))
                left[nums[i]] = i;
            right[nums[i]] = i;
            counter[nums[i]]++;
            degree = max(degree, counter[nums[i]]);    
        }
        int res = nums.size();
        for(auto& kv : counter){
            if(kv.second == degree){
                res = min(res, right[kv.first] - left[kv.first] + 1);
            }
        }
        return res;
    }
};
5.448. 找到所有数组中消失的数字 - 力扣(LeetCode)

 

 哎哟,感觉这些题目好奇妙啊。我真服了,为什么我想不到

class Solution {
public:
    vector<int> findDisappearedNumbers(vector<int>& nums) {
        vector<int> res;
        sort(nums.begin(), nums.end());
        for(auto num: nums){
            int x = (num - 1) % nums.size();
            nums[x] += nums.size();
        }
        for(int i = 0; i < nums.size(); i++){
            if(nums[i] <= nums.size()){
                res.push_back(i + 1);
            }
        }
        return res;
    }
};

int x = (num - 1)% nums.size();

这个操作是在规避元素值从1开始,数组下标从0开始的影响

这样值为1的元素就会放在数组下标为0的位置,值为2的元素就会放在数组下标为1的位置

让每个元素都加上数组的大小是因为这样所有出现的元素都会大于数组的长度,如果在后期遍历时,发现某个数组数值小于等于数组长度,那么它的初始值是0,他一定没出现过,它就是那个消失的数字!

感觉今天做题状态不好,好多细枝末节没弄懂,累积起来不就是没弄懂啊!多看看多想想,回来完善。老师我太想进步了,好想变厉害啊TT 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Phytium】飞腾D2000 UEFI/EDK2 适配 RTC(IIC SD3077)

文章目录 0. env1. 软件2. 硬件 10. 需求1. 硬件2. 软件 20. DatasheetCPURTC 30. 调试步骤1. 硬件环境搭建2. UEFI 开发环境搭建3. 修改步骤1. UEFI 中使能RTC驱动、配置RTC信息等1.1 使能RTC驱动1.2 修改RTC对应的IIC配置信息1.3 解决驱动冲突1.4 验证波形 2. 修改对应RTC驱动…

[lesson36]经典问题解析三

经典问题解析三 关于赋值的疑问 什么时候需要重载赋值操作符&#xff1f;编译器是否提供默认的赋值操作&#xff1f; 编译器为每个类默认重载了赋值操作符 默认的赋值操作符仅完成浅拷贝 当需要进行深拷贝时必须重载赋值操作符 赋值操作符与拷贝构造函数有相同的存在意义 …

零基础入门测试该学什么?超全整理,照着学就对了!

对于很多小白而言&#xff0c;想要转行软件测试岗位&#xff0c;却又怕自己从来没有接触过计算机&#xff0c;底子很薄弱&#xff0c;从而还没开始就打起了退堂鼓。也有许多初学者&#xff0c;在入门的过程中&#xff0c;苦于不知道该学什么&#xff0c;又该从何学起&#xff0…

代码随想录算法训练营第四十二天| 二维背包、一维背包、LeetCode 416.分割等和子集

一、二维背包 文章讲解/视频讲解&#xff1a;https://programmercarl.com/%E8%83%8C%E5%8C%85%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%8001%E8%83%8C%E5%8C%85-1.html 状态&#xff1a;已解决 1.背包问题介绍 背包问题实则是一类问题的集合&#xff0c;有好多不同小类型&#xff0c…

单位优秀信息宣传员告诉你向媒体投稿你不知道的好方法

作为基层社区信息宣传工作队伍中的一员,我刚开始接手单位的信息宣传投稿任务时,真的是一片茫然。没有任何媒体编辑的熟人朋友,我只能硬着头皮,一家家地去联系媒体,沟通投稿的事宜。这个过程真的是既费事又费力,每次投稿都像是在茫茫大海中寻找那一丝被认可的机会。 因为媒体对稿…

VLAN Mapping原理描述

基本原理 路由器收到带Tag的数据报文后&#xff0c;根据配置的VLAN Mapping方式&#xff0c;决定替换外层Tag中的VLAN ID或优先级&#xff1b;然后进入MAC地址学习阶段&#xff0c;根据源MAC地址映射后的VLAN ID刷新MAC地址表项&#xff1b;根据目的MAC映射后VLAN ID查找MAC地…

T细胞耗竭

目录 T Cell Exhaustion T 细胞衰竭路径上的细胞和分子路标 研究起源 介绍 T 细胞耗竭的发生路径 耗尽的T细胞亚群的解剖分离和迁移 持续TCR刺激的收益递减 通过共调节受体进行发育微调 细胞因子介导的耗尽T细胞亚群的特异性 T细胞耗竭和表观遗传 T Cell Exhaustion…

面试问答之转账功能测试点详解

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

快速排序题目SelectK问题

力扣75.颜色分类 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums &#xff0c;原地对它们进行排序&#xff0c;使得相同颜色的元素相邻&#xff0c;并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库内置的 sor…

数据库(mysql)-连接嵌套查询-2

子查询 MySQL中的子查询&#xff08;Subquery&#xff09;是嵌套在其他SQL查询中的查询。子查询可以出现在SELECT、FROM或WHERE子句中&#xff0c;并用于返回将被用于外部查询的数据。子查询的结果可以是一个单一的值、一行、一列或多行多列的数据集。 单行单列查询 实例 #查…

一款挺不错网站维护页面HTML源码

一款挺不错网站维护页面源码&#xff0c;单HTML不需要数据库&#xff0c;上传到你的虚拟机就可以用做维护页面还不错&#xff0c;用处多。。 源码下载 一款挺不错网站维护页面源码

【智能算法】鱼鹰优化算法(OOA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2023年&#xff0c;M Dehghani等人受到自然界鱼鹰狩猎行为启发&#xff0c;提出了鱼鹰优化算法&#xff08;Osprey Optimization Algorithm, OOA&#xff09;。 2.算法原理 2.1算法思想 OOA基本灵…

网络爬虫:定义、应用及法律道德考量

网络爬虫技术在当今数据驱动的世界中发挥着重要作用。本文将从网络爬虫的定义和主要功能&#xff0c;其在业界的应用实例&#xff0c;以及涉及的法律和道德问题三个方面进行深入探讨。 1. 爬虫的定义和主要功能 网络爬虫&#xff0c;也称为网页爬虫或蜘蛛&#xff0c;是一种…

苹果与印度深入洽谈,开启新业务 | 百能云芯

印度经济时报&#xff08;ET&#xff09;引述知情人士报导&#xff0c;苹果&#xff08;Apple&#xff09;正和 Murugappa 集团和塔塔集团旗下的Titan公司深入洽谈&#xff0c;将由这两家印度业者组装、甚至生产 iPhone 所用的相机模组。 苹果正将iPhone供应链向中国大陆以外地…

SpringBoot学习(三)数据访问、基础特性、核心原理

文章目录 数据访问示例自动配置原理jdbc场景自动配置数据源等基本信息MyBatisAutoConfiguration配置MyBatis整合流程 基础特性SpringApplication自定义banner自定义SpringApplicationFluentBuilder API Profiles使用指定环境环境激活环境包含 Profiles配置文件 外部化配置配置优…

JVM结构化体系

目录 目录 1.JVM 简介 1.1. 如何理解 JVM 呢&#xff1f; 1.2. 市场主流 JVM 分析&#xff1f; 1.3. 为什么要学习 JVM&#xff1f; 1.4. 字节码底层是如何执行呢&#xff1f; 如何理解 JIT 呢&#xff1f; 为什么 JVM 中解释执行与编译执行的并存&#xff08;混合模式&…

新手教程 | 2024年最新Vmware17安装教程及许可证(详细图文)

目录 前言&#xff1a; 一、VMware Workstation 17 Pro 简介 二、下载安装&#xff08;以Windows为例&#xff09; 三、许可证 四、检查是否安装成功 前言&#xff1a; 重新装电脑后&#xff0c;安装虚拟机 一、VMware Workstation 17 Pro 简介 VMware Workstation 17 …

【JavaWeb】Day46.Mybatis——入门

JDBC介绍 通过Mybatis可以很方便的进行数据库的访问操作。其实java语言操作数据库&#xff0c;只能通过一种方式&#xff1a;使用sun公司提供的 JDBC 规范。Mybatis框架&#xff0c;就是对原始的JDBC程序的封装。 JDBC&#xff1a; ( Java DataBase Connectivity )&#xff0c…

元类的执行

class MetaB(type):def __new__(cls, name, bases, attrs):print(f"使用元类 {cls.__name__} 创建{name}类 ")return super().__new__(cls, name, bases, attrs)class A(metaclassMetaB):passclass C(A):pass元类MetaB的__new__方法应该只会在创建类A时被调用一次, 因…

YoloV9实战:从Labelme到训练、验证、测试、模块解析

模型实战 训练COCO数据集 本次使用2017版本的COCO数据集作为例子&#xff0c;演示如何使用YoloV8训练和预测。 下载数据集 Images: 2017 Train images [118K/18GB] &#xff1a;http://images.cocodataset.org/zips/train2017.zip2017 Val images [5K/1GB]&#xff1a;htt…
最新文章