
数组
SYaoJun
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
蛇形矩阵
题目难度:简单类型:二维数组题意:从左上角依次打印数字,注意左边之间的关系就行了。#include <cstdio>#include <iostream> #include <cstring>using namespace std;int dp[105][105];int main(){ int n; while(scanf("...原创 2020-04-11 09:14:48 · 632 阅读 · 0 评论 -
最小调整有序
题目难度:简单类型:数组类似题1class Rearrange {public: vector<int> findSegment(vector<int> A, int n) { int pmax = A[0], pidx = -1; for(int i = 0; i < n; i++){ ...原创 2020-04-11 08:48:44 · 311 阅读 · 0 评论 -
1184. 公交站间的距离
题目类型:数组难度:简单题意:从循环的车站中,找到从start到destination的最短路径。因为车站的总长度确定,所以要么正向走,要么逆向走,先求出来总长度,然后再与正向的相减,取最小的,就是要求的结果。class Solution {public: int distanceBetweenBusStops(vector<int>& dist, int s...原创 2020-04-10 10:25:32 · 159 阅读 · 0 评论 -
1176. 健身计划评估
题目难度:简单类型:数组题意:找到连续k天的值与lower和upper的大小,如果大于upper加1分,如果小于lower减一分。注意必须要超过k天之后才能开始计算。class Solution {public: int dietPlanPerformance(vector<int>& c, int k, int lower, int upper) { ...原创 2020-04-10 10:18:05 · 442 阅读 · 0 评论 -
1128. 等价多米诺骨牌对的数量
题目难度:简单类型:数组题意:找到所有的相同数组对。我最开始理解错了,这种相同数对最多是k*(k-1)/2, 我开始理解成了阶乘个,所以一直错。以下并不是最优解法,只是一种思路,即先排序把相同的数对放在一起,然后统计相同数对的数量。最后把相同的数对用上面的公式求一下,就是最终结果。class Solution {public: int numEquivDominoPairs(ve...原创 2020-04-10 10:08:14 · 148 阅读 · 0 评论 -
左右最值最大差
题目给定一个长度为N(N>1)的整型数组A,可以将A划分成左右两个部分,左部分A[0…K],右部分A[K+1…N-1],K可以取值的范围是[0,N-2]。求这么多划分方案中,左部分中的最大值减去右部分最大值的绝对值,最大是多少?给定整数数组A和数组的大小n,请返回题目所求的答案。测试样例:[2,7,3,1,1],5返回:6版本1预处理数组的最值从左往右和从右往左时间复...原创 2020-04-09 11:50:08 · 163 阅读 · 0 评论 -
最短排序
题目对于一个无序数组A,请设计一个算法,求出需要排序的最短子数组的长度。给定一个整数数组A及它的大小n,请返回最短子数组的长度。[1,5,3,4,2,6,7],74class ShortSubsequence {public: int findShortest(vector<int> A, int n) { //正向 更新最大值 同时记录最大...原创 2020-04-09 11:14:09 · 231 阅读 · 0 评论 -
会议室 II
难度:中等类型:数组题意:找到最少使用的会议室数,可以用上下车的思维来考虑。会议室的开始时间为上车,会议室的结束时间为下车,我们需要统计在车上的人的最大数量。按照时间的先后顺序排序,注意如果在同一个时刻既有上车又有下车的人,先下后上,腾出最大的空间。随意排序的时候加入了第二个关键字,就是为了防止上车的先算。class Solution {public: int minMeeting...原创 2020-04-08 13:05:50 · 286 阅读 · 0 评论 -
1109. 航班预订统计
题目类型:差分数组难度:中等class Solution {public: int dp[20005]; vector<int> corpFlightBookings(vector<vector<int>>& book, int n) { //差分数组 vector<int> ...原创 2020-03-29 13:24:30 · 163 阅读 · 0 评论 -
顺时针打印矩阵
题目类型:数组 模拟注意:cnt来统计,而且在四个操作中也要加,不然会出错。class Printer {public: vector<int> clockwisePrint(vector<vector<int> > matrix, int m, int n) { if(!m) return {}; if(m==1...原创 2020-03-29 13:00:23 · 141 阅读 · 0 评论 -
54. 螺旋矩阵
题目类型:数组 模拟难度:中等class Solution {public: vector<int> spiralOrder(vector<vector<int>>& matrix) { int m = matrix.size(); if(!m) return {}; int n = mat...原创 2020-03-29 12:54:59 · 148 阅读 · 0 评论 -
第二大的数
题目公司:搜狐类型:数组题意:找到第二大的数。可以扫描两次,第一次找第一大的,第二次找第二大的。注意去重。#include <bits/stdc++.h>using namespace std;const int N = 1e5+5;int a[N];int main(){ int n; scanf("%d", &n); for(int i = 0; i ...原创 2020-03-27 13:55:36 · 176 阅读 · 1 评论 -
最大乘积
题目公司:拼多多类型:数组题意:注意时间必须是线性的,所以遍历三次从数组中找出3个数使乘积最大,注意有负数和0,所以不仅要算正数最大的,也要算负数最大的。这道题的坑应该有很多,虽然通过了这道题,但是代码不是完备的,还可以被特殊的数据攻击。如果时间充裕的大佬可以自行完备。下面我提供部分思路。#include <bits/stdc++.h>using namespace std;...原创 2020-03-27 12:21:27 · 139 阅读 · 0 评论 -
624. 数组列表中的最大距离
题目难度:简单类型:数组题意:从不同行中找到最大差值,首先找到最大值和最小值,然后再用不同行的去求差值。class Solution {public: int maxDistance(vector<vector<int>>& arrays) { //先找到最大最小值的行 int mini=0, maxi=0, min...原创 2020-03-27 09:49:53 · 328 阅读 · 0 评论 -
1144 The Missing Number (20 分)
map的应用,注意使用数组hash会在最后一个测试点上超时,而且数组开不了int范围大小的空间。#include<cstdio>#include<cstring>#include<unordered_map>using namespace std;int main(){ int n,x; unordered_map<int,bool> ...原创 2019-03-01 15:16:14 · 330 阅读 · 0 评论 -
7-39 魔法优惠券 (25 分)
两次判断不能有重叠的部分#include <iostream>#include <vector>#include <string>#include <cmath>#include <algorithm>#include <queue>#include <cstdio>#include <cct...原创 2019-10-11 22:21:39 · 402 阅读 · 0 评论 -
7-2 一元多项式的乘法与加法运算 (20 分)
注意:指数会存在负数,所以用数组存是不行的,另外计算多想是从乘法的时候不可以两重循环从-1000到1000这样会超时,显然应该根据输入的大小来循环。另外是注意没有满足条件的情况下,需要特殊处理。#include <iostream>#include <vector>#include <string>#include <cmath>#in...原创 2019-10-11 11:41:38 · 583 阅读 · 0 评论 -
还是A+B【浙江大学】
牛客网题目链接题意输入两个数,如果两个数的后k位相同则直接输出-1,否则输出A+B的值#include<bits/stdc++.h>using namespace std;int main(){ int a,b,k; int arr[10],brr[10]; while(cin>>a>>b>>k){ if(a==0&&a...原创 2019-10-04 19:30:33 · 203 阅读 · 0 评论 -
在行列都排好序的矩阵中找指定的数
#include <cstdio>#include <iostream>#include <vector>#include <algorithm>using namespace std;const int N = 1003;int arr[N][N];int main(){ int m, n, x; scanf("%d%d%d",...原创 2019-09-30 14:20:41 · 167 阅读 · 0 评论 -
数组中未出现的最小正整数
#include <iostream>#include <cstdio>using namespace std;const int N = 1e6+3;int arr[N];int main(){ int n; scanf("%d", &n); for(int i = 0; i < n; i++) scanf("%d", arr+i); i...原创 2019-09-30 09:26:03 · 207 阅读 · 0 评论 -
清除行列
题目链接class Clearer {public: vector<vector<int> > clearZero(vector<vector<int> > mat, int n) { int x[505]={0}, y[505]={0}; for(int i = 0; i < n; i++){ ...原创 2019-09-13 08:43:44 · 119 阅读 · 0 评论 -
problem B【西安电子科技大学】
题目链接注意:本题说的主对角线,但是实际要把副对角线也考虑在内。#include<bits/stdc++.h>using namespace std;const int maxn=1e3+5;int arr[maxn][maxn];int main(){ int m,sum,tmp; while(cin>>m){ vector<int> a...原创 2019-07-29 20:32:07 · 151 阅读 · 0 评论 -
把数组中的0移动到数组末尾
代码中包含两种方法:一种是覆盖,另一种是快排思想。详情请看灯神视频#include<cstdio>#include<algorithm>using namespace std;void moveZeros(int arr[],int n){ int zeros=0; for(int i=0;i<n;i++){ if(arr[i] != 0){ ...原创 2019-03-11 18:12:51 · 2187 阅读 · 0 评论 -
1046 Shortest Distance (20 分)
方法1先用数组记录前缀后,然后减去两者的差值。由于数组形成的是个环,所以累加和是固定的,反方向的距离实际就等于总长度减去正向的长度。#include<cstdio>const int maxn=1e5+5;int cost[maxn];int dp[maxn];int n;void swap(int& x,int& y){ int t=x;x=y;y...原创 2019-02-16 18:04:40 · 213 阅读 · 0 评论 -
1073 多选题常见计分法 (20 分)
几乎相同的题PATB1058题目一定要认真仔细的读其实下面的代码还可以优化但是我提交通过之后就不想改了核心:把选择错误的频次用二维数组存起来,然后经过两次遍历。第一次遍历找出出错最多次数的题目第二次遍历把所有与出错最多次数相等的选项输出由于是从左到右从上到下的顺序遍历,所以天然有序#include<cstdio>#include<vector>#incl...原创 2019-01-27 17:06:14 · 707 阅读 · 0 评论 -
1068 万绿丛中一点红 (20 分)
本来是道简单题,可惜我总是读不懂题意。1.看了半天才读懂独一无二是指这个值要唯一2.8个相邻像素也要考虑边缘的5个邻居的情况3.差值是指绝对值的差值#include<cstdio>#include<map>using namespace std;int arr[1005][1005];int x,y,T;map<int,int> mp;int...原创 2019-01-27 14:29:11 · 268 阅读 · 0 评论 -
1092 最好吃的月饼 (20 分)
一道非常简单的题,注意最大销量是指每列的总和最大,而不是单个位置的最大值。#include<cstdio>#include<cstring>int arr[110][1010];int main(){ int N,M,max=-1; scanf("%d%d",&N,&M); for(int i=0;i<M;i++){ for(int...原创 2019-01-27 12:52:40 · 477 阅读 · 0 评论 -
1050 螺旋矩阵 (25 分)
#include<stdio.h>void SetArray(int arr[10][10], int m, int n){ int i=1,j=1,U=1,D=m,L=1,R=n,now=0,num=10; //1-m,1-n //向右填充 int N=m*n; while(now < N) { while(now<N && j&...原创 2019-01-12 21:36:10 · 216 阅读 · 0 评论 -
编程实现打印杨辉三角(要求使用一维数组处理)
使用一维数组实现思路:使用滚动数组从后往前更新值,边更新边输出。#include<cstdio>int arr[100];int main(){ arr[0]=1; int n; scanf("%d",&n); for(int i=0;i<n;i++){ for(int j=i;j>=0;j--){ if(j==0||j==i) { ...原创 2019-01-18 09:17:22 · 1807 阅读 · 0 评论 -
分组统计【北京理工大学】
题目链接注意对于分组为空的小组要直接跳过#include<bits/stdc++.h>using namespace std;int arr[105];int main(){ int m,n,x; while(cin>>m){ while(m--){ cin>>n; vector<int> G[105]; fo...原创 2019-08-03 09:34:44 · 142 阅读 · 0 评论 -
最大的两个数【华中科技大学】★
题目链接解题思路题目读懂太难了,真的搞人,关键是要保留先后次序,又要保证是整列中最大的两个数。我写的太啰嗦了,真的搞得我心态爆炸,可能我太菜了吧!#include<bits/stdc++.h>using namespace std;int a[6][6];int b[2][2];int main(){ int x; while(cin>>x){ m...原创 2019-08-02 12:30:59 · 273 阅读 · 0 评论 -
面试题4:二维数组中的查找
根据二维数组递增的特性,从右上角或者左下角开始查找都是可行的,时间复杂度是O(m+n)O(m+n)O(m+n)class Solution {public: bool searchArray(vector<vector<int>> array, int target) { if(array.empty() ||...原创 2019-09-05 20:43:10 · 101 阅读 · 0 评论 -
面试3_:不修改数组找出重复的数字
使用二分法,每次统计分界点两边的数据数量,根据抽屉原理,哪边放的东西大于了抽屉的数量就会产生重复,因此搜索空间减半。class Solution {public: int duplicateInArray(vector<int>& nums) { int l = 1, r = nums.size() - 1; while(l <...原创 2019-09-05 20:34:04 · 133 阅读 · 0 评论 -
面试题3:数组中重复的数字
首先把不在范围内的数据筛选出去然后每次下标与数值比较,将下标与数值不匹配的项,复位数值。当复位时,该数值已经有一个匹配的项了,说明该数值重复了。class Solution {public: int duplicateInArray(vector<int>& nums) { int n = nums.size(); for(int...原创 2019-09-05 20:11:51 · 108 阅读 · 0 评论 -
15. 三数之和
判重很关键class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { vector<vector<int>> res; sort(nums.begin(), nums.end()); ...原创 2019-09-04 08:12:16 · 110 阅读 · 0 评论 -
795. 前缀和
AcWing题目链接模板题#include <iostream>#include <vector>#include <algorithm> #include <cmath>#include <cstring>using namespace std;const int N = 1e5+7;int nums[N];int ...原创 2019-09-02 17:24:24 · 134 阅读 · 0 评论 -
1545 区间和
51nod题目链接前缀和模板题#include <iostream>#include <vector>#include <algorithm> #include <cmath>#include <cstring>using namespace std;const int N = 1e5+7;int nums[N];i...原创 2019-09-02 17:23:14 · 230 阅读 · 0 评论 -
1032 Sharing (25 分)
思路:使用静态链表,相当于哈希操作。注意:地址需要输出5位数#include&lt;cstdio&gt;struct node{ char c; int next; int index;}Node[100006];int main(){ int x,y,n,cur,next; char c; scanf("%d%d%d",&amp;x,&amp;y,&amp;n);原创 2019-01-19 21:05:35 · 282 阅读 · 0 评论 -
1037. Magic Coupon (25)
查看原题目请点我这里解题思路 先按从大到小排序 大的正数和大的正数相乘 再按从小到大排序 小的负数和小的负数相乘 最后结果就是两者的和#include<cstdio>#include<algorithm>using namespace std;const int maxn=100005;int cop[maxn]={0};int pro[maxn...原创 2018-03-16 11:05:04 · 209 阅读 · 0 评论 -
荷兰国旗问题
荷兰国旗问题给定一个数组arr和一个数num,请把小于num的数放在数组的左边,等于num的数放在数组的中间,大于num的数放在数组的右边要求:额外空间复杂度O(1),时间复杂度O(n)#include&lt;cstdio&gt;int Less = 0;int More = 0;void swap(int arr[],int i,int j){ int tmp = arr[i];...原创 2018-12-11 10:58:44 · 166 阅读 · 0 评论