数组zjoi 2017

[省选联考 2023] 染色数组 题解

题目描述 给定一个长度为 $n$ 的正整数数组 $A$,其中每个数都在 $1$ 到 $m$ 之间,从左到右排成一排。现在要将每个数字染成红色或者绿色,我们定义一个染色方案为优秀的染色方案,当且仅当它满足: 每个数 $A_{i}$ 要么被染成红色,要么被染成绿色。 红色的数从左到右依次严格递增,绿色的 ......
题解 数组 2023

[省选联考 2023] 染色数组 题解

题目描述 给定一个长度为 $n$ 的正整数数组 $A$,其中每个数都在 $1$ 到 $m$ 之间,从左到右排成一排。现在要将每个数字染成红色或者绿色,我们定义一个染色方案为优秀的染色方案,当且仅当它满足: 每个数 $A_{i}$ 要么被染成红色,要么被染成绿色。 红色的数从左到右依次严格递增,绿色的 ......
题解 数组 2023

数组的算法

数值型数组特征值统计 这里特征值涉及到:平均值,最大值,最小值,总和等 求最大值:将数组第一个元素假设为最大值 int max= arr[0];再然后用写一个判断语句如果数组第一个 元素小于当前比较的元素就把当前比较的元素赋值给max if(max<arr[i]){max = arr[i]} 求最小 ......
数组 算法

C语言初识数组

以以下代码为例:重点在于 定义数组容量 对数组的每个元素循环赋值 遍历数组 1 #include <stdio.h> 2 int main(){ 3 4 int num=0; 5 double sum=0; 6 int cnt=0; 7 scanf("%d",&num); 8 int number[ ......
数组 语言

多维数组的使用(一)

多维数组概述 Java 语言里提供了支持多维数组的语法。 如果说可以把一维数组当成几何中的线性图形,那么二维数组就相当于是一个表格,像Excel中的表格、围棋棋盘一样。 应用举例1: 某公司2022年全年各个月份的销售额进行登记。按月份存储,可以使用一维数组。如下: int[] monthData ......
数组

2610. 转换二维数组

题目链接:2610. 转换二维数组 方法:哈希表 解题思路 统计$nums$中每个元素的数量,然后每行输出其中的$1$个,直到元素全部输出。 代码 class Solution { public: vector<vector<int>> findMatrix(vector<int>& nums) { ......
数组 2610

2607. 使子数组元素和相等

题目链接:2607. 使子数组元素和相等 方法:分组 + gcd + 中位数 解题思路 题意:将$arr$中某个元素$+1$或$-1$,使得任意长度为$k$的子数组的元素总和相等,且总操作数最少; 1、首先考虑数组$arr$为非循环数组: 任意$k$长的子数组总和相等,则有下述情形,依次可以将$ar ......
数组 元素 2607

2605. 从两个数字数组里生成最小数字

题目链接:2605. 从两个数字数组里生成最小数字 方法:哈希 解题思路 本题有两种情况: 两个数组有共同元素,则取其中最小值返回; 两个数组没有共同元素,则取两个数组中各自的最小元素组成最小的两位数返回。 代码 class Solution { public: int minNumber(vect ......
数字 数组 两个 2605

剑指 Offer 56 - I. 数组中数字出现的次数

题目链接:剑指 Offer 56 - I. 数组中数字出现的次数 方法:位运算 + 分类 解题思路 异或运算:当两个相同的数异或时,结果为$0$; 对于本题,假设答案为$res1$ 和 $res2$,那么对数组中所有的数求异或时,其结果实际等于 $res1$ ^ $res2$;并且此结果中二进制位为 ......
数组 次数 数字 Offer 56

剑指 Offer 56 - II. 数组中数字出现的次数 II

题目链接:剑指 Offer 56 - II. 数组中数字出现的次数 II 方法一:位运算 解题思路 由题意知,其他数值都出现了三次,那么其数值二进制位上的$1$也至少出现了三次,那么我们可以统计数值每一位上$1$的个数的总和,然后遍历每一位上$1$的数量,若某一位上的$1$的数量不能被$3$整除,说 ......
数组 次数 数字 Offer II

6357. 使数组元素全部相等的最少操作次数

题目链接:6357. 使数组元素全部相等的最少操作次数 方法:排序 + 前缀和 + 二分查找 解题思路 初始化$target = queries[i]$,根据题意,对于每次询问要将数组$nums$中的元素$=>target$,那么对于小于等于$target$的元素要加上一个数,而大于$target$ ......
数组 元素 次数 6357

1574. 删除最短的子数组使剩余数组有序

题目链接:1574. 删除最短的子数组使剩余数组有序 方法:双指针 + 找规律 解题思路 去除子数组的可能情况: 将第一个递减序列的左端点到末尾的子数组去掉; 将最后一个递减序列的右端点到起点的子数组去掉; 左端点:起点 和 第一个递减序列的左端点之间取, 右端点:最后一个递减序列的右端点和末尾之间 ......
数组 1574

剑指 Offer 42. 连续子数组的最大和

题目链接:剑指 Offer 42. 连续子数组的最大和 方法:动态规划 解题思路 参考动态规划详细解析——剑指 Offer 42. 连续子数组的最大和 注意: 很多同学首先会想到同向双指针,实际上本题由于$nums$数组的某一个元素的下一个元素可正可负,导致同向双指针要求的单调性无法满足; 使用$d ......
数组 Offer 42

2488. 统计中位数为 K 的子数组

题目链接:2488. 统计中位数为 K 的子数组 方法:前缀和 + 哈希 解题思路 根据题意可知,在$k$是中位数的子数组中,比$k$大的数 $-$ 比$k$小的数 $=$ $0$ || $1$。那么将两种状态,小于$k$置$-1$,大于$k$置$+1$,计算数组的前缀和$s$。 由于子数组要包含$ ......
中位数 数组 2488

剑指 Offer 51. 数组中的逆序对

题目链接:剑指 Offer 51. 数组中的逆序对 方法一:归并排序 解题思路 逆序对:即后面的数大于前面的数; 归并排序: 先分,在此过程中会先递归的将序列分为一段一段序列,并且每段序列之间的先后顺序是不变的。 再治,也即归并,归并的过程中会将两段序列进行比较$(A,B,B在A的后面)$,当出现$ ......
逆序 数组 Offer 51

108. 将有序数组转换为二叉搜索树

题目链接:108. 将有序数组转换为二叉搜索树 方法:递归建树 解题思路 每次选取中间的元素作为根节点,递归创建左右子树,就可以保证左右子树的高度差绝对值不超过1 代码 /** * Definition for a binary tree node. * struct TreeNode { * in ......
数组 108

1590. 使数组和能被 P 整除

题目链接:1590. 使数组和能被 P 整除 方法:前缀和 + 哈希 解题思路 (1)要求$(sum - sunSum)$ % $p = 0$,即要求 $[sum - (s[j] - s[i])]$ % $p = 0$, 即 $sum$ % $p = (s[j] - s[i])$ % $p$,即 $ ......
数组 1590

二维数组

在刷力扣题目是会遇到这种情况 int** generate(int numRows, int* returnSize, int** returnColumnSizes){ } int numRows:表示这传入的是一个数。 int* returnSize:表示这传入的是一个数的地址。 int** r ......
数组

美亚杯2017年团队赛复盘WP

美亚杯2017团队赛复盘WP linux | 1 | 被检取作法证检验的LINUX系统,共有四个硬盘,已经分别被制作为四个E01法证镜像文件(Forensic Images),下列哪个不是它们的MD5哈希值(Hash value)?B | | | | | A. | 2e4a6afe6b2718848 ......
团队 2017

1144. 递减元素使数组呈锯齿状

题目链接:1144. 递减元素使数组呈锯齿状 方法:找规律 + 模拟 解题思路 对于一个整数数组 $nums$,可以转换为题目中两种锯齿数组,对于两种情况的转换取最小值。 并且由于操作只能将一个元素减1,因此: 对于第1种情况,只用下标为奇数的元素需要减小到比两边最小值小1; 对于第2种情况,只用下 ......
锯齿状 锯齿 数组 元素 1144

数组扁平化

var arr = [ { id: 1, title: '我是1目录', children: [ { id: 11, title: '我是1-1目录', children: [ { id: 111, title: '我是1-1-1目录', children: [] } ] }, { id: 12, ......
扁平 数组

【Java】数组

数组是编程语言中常见的数据结构,用来存储一组相同数据类型的数据,可以通过整型索引访问数组中的每一个值。需要注意,同一个数组中存储的所有元素的数据类型必须相同。 根据数组存放元素的组织结构,可将数组分为一维数组、二维数组以及多维(三维及以上)。 创建数组: data_type[ ]varName; d ......
数组 Java

JavaScript 数组笔记

添加和删除数组项 添加 push() **push()**方法:向数组的末尾添加一个或多个元素,并返回修改后的数组长度。 语法: arr.push(element1[, ...[, elementN]]) 参数: element1, ..., elementN:要添加到数组末尾的元素。 示例: co ......
数组 JavaScript 笔记

二维数组的初始化

⑴ 分行进行初始化 int a[2][3]={ {1,2,3},{4,5,6}}; 在{ }内部再用{ }把各行分开,第一对{ }中的初值1,2,3是0行的3个元素的初值。第二对{ }中的初值4,5,6是1行的3个元素的初值。相当于执 行如下语句: int a[2][3]; a[0][0]=1;a[ ......
数组

数组模拟单向队列的思路及代码

JAVA实现数组模拟单向队列的思路及代码 一、什么是队列? 队列是一种特殊的线性表 ,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。 进行插入操作的端称为队尾,进行删除操作的端称为队头。 队列中没有元素时,称为 ......
队列 数组 单向 思路 代码

数组模拟环形队列的思路及代码

JAVA实现数组模拟环形队列的思路及代码 前言 在对Java实现数组模拟队列零了解的情况下,建议先去阅读《JAVA实现数组模拟单向队列的思路及代码》一文,可以辅助理解本文核心思想。 一、环形数组队列 实现:让数组达到复用的效果,即:当我们从数组队列中取出了数据,那取出数据后后这个空间可以再次使用。 ......
环形 队列 数组 思路 代码

二维数组与稀疏数组之间的转换

JAVA实现二维数组与稀疏数组之间的转换 一、什么是稀疏数组? 稀疏数组(Sparse array) ,所谓稀疏数组就是数组中大部分的内容值都未被使用(或都为零),在数组中仅有少部分的空间使用。因此造成内存空间的浪费,为了节省内存空间,并且不影响数组中原有的内容值,我们可以采用一种压缩的方式来表示稀 ......
数组 之间

剑指offer66(Java)-构建乘积数组(中等)

题目: 给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。 示例: 输入: [1,2,3,4,5]输出: ......
乘积 数组 offer Java 66

剑指offer03(Java)-数组中重复的数字(简单)

题目: 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 限 ......
数组 数字 offer Java 03

26. 删除有序数组中的重复项 & 80. 删除有序数组中的重复项 II

力扣题目链接(26) 给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。 由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k  ......
数组 amp 26 80 II