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.hqwc.cn/news/624476.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Leetcode每日一题】 动态规划 - 最小路径和(难度⭐⭐)(58)

1. 题目解析 题目链接&#xff1a;64. 最小路径和 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 算法思路梳理&#xff1a; 一、状态表示 在路径类问题中&#xff0c;状态表示通常有两种形式&#xff1a; 从 [i,…

【电控笔记2.2】电流回路+延迟效应

延迟效应的来源以及影响 数字控制系统的delay: 5.4节有介绍T0=0.5TS 低通滤波器的时间常数? 滤波器的传递函数与性能参数

【C/C++笔试练习】read函数、虚拟存储、用户态、线程特点、缺页处理、调度算法、进程优先级、锁的使用、创建进程、不用加减乘除做加法、三角形

文章目录 C/C笔试练习选择部分&#xff08;1&#xff09;read函数&#xff08;2&#xff09;虚拟存储&#xff08;3&#xff09;用户态&#xff08;4&#xff09;线程特点&#xff08;5&#xff09;缺页处理&#xff08;6&#xff09;调度算法&#xff08;7&#xff09;进程优先…

java-spring 图灵 04

在Spring框架中&#xff0c;可以使用org.springframework.core.io.support.ResourcePatternResolver接口的resolveBasePackage方法来将指定的基础包解析为用于包搜索路径的模式规范。 例如&#xff0c;如果基础包是com.example.app&#xff0c;则可以使用resolveBasePackage方法…

UE4_动画基础_不同骨骼的动画重定向步骤

学习笔记&#xff0c;仅供参考&#xff01; 1、导入fbx外部资源&#xff0c;不包含动画&#xff0c;需要使用小白人动画资源。 2、打开Girl_Skeleton。发现骨骼数量不同&#xff0c;要想使用另一个骨骼的动画资源&#xff0c;需要进行不同骨骼的动画重定向。 3、打开小白人骨骼…

基于java+springboot+vue实现的智慧党建系统(文末源码+Lw+ppt)23-58

摘 要 当今社会进入了科技进步、经济社会快速发展的新时代。国际信息和学术交流也不断加强&#xff0c;计算机技术对经济社会发展和人民生活改善的影响也日益突出&#xff0c;人类的生存和思考方式也产生了变化。传统智慧党建管理采取了人工的管理方法&#xff0c;但这种管…

C语言中的结构体:从定义到传递

前言 结构体是C语言中一种重要的数据类型&#xff0c;它允许我们将不同类型的数据组合成一个整体&#xff0c;并以自定义的方式进行操作。通过结构体&#xff0c;我们可以更加灵活地管理和处理复杂的数据结构&#xff0c;从而提高程序的可读性和可维护性。本篇博客将从结构体的…

大数据dolphinscheduler 本地容器化安装

Minio 容器安装 docker run -p 9000:9000 -p 9090:9090 --name minio -d -e "MINIO_ACCESS_KEYminioadmin" -e "MINIO_SECRET_KEYminioadmin" -v D:\SF\DOCKER\minio\data:/data -v D:\SF\DOCKER\minio\config:/root/.minio minio/minio server /da…

【数据分析面试】21.Spotify 音乐数据库搭建(SQL主键和外键)

题目&#xff1a;音乐数据库设计 假设现在你在Spotify工作&#xff0c;你需要设计一个用于存储歌曲元数据的关系型数据库。 数据库要求包括歌曲标题、歌曲长度、歌曲添加到平台的日期、艺术家、专辑、曲目号&#xff08;在专辑中的顺序&#xff09;、歌曲的发行年份以及流派等…

Vision GNN: An Image is Worth Graph of Nodes

感受野&#xff1a;在卷积神经网络中,感受野(Receptive Field)是指特征图上的某个点能看到的输入图像的区域,即特征图上的点是由输入图像中感受野大小区域的计算得到的。 感受野并非越大越好&#xff0c;反而可能因为过大而过于发散梯度下降&#xff08;Gradient Descent GD&am…

自学Java的第二十四次笔记

一,方法重载 1.基本介绍 java 中允许同一个类中&#xff0c;多个同名方法的存在&#xff0c;但要求 形参列表不一致&#xff01; 比如&#xff1a; System.out.println(); out 是 PrintStream 类型 2.重载的好处 1) 减轻了起名的麻烦 2) 减轻了记名的麻烦 3.快速入门案…

【算法】深入理解二分查找算法及其应用

文章目录 1. 朴素二分查找的基本步骤&#xff1a;2. 总结二分模板 二分查找&#xff08;Binary Search&#xff09;是一种在有序数组中查找目标值的高效算法。它的基本思想是将数组分成两半&#xff0c;然后确定目标值可能存在的那一半&#xff0c;重复这个过程直到找到目标值或…