题目: 6080. 使数组按
非
递减
顺序
排列
给你一个下标从 0 开始的整数数组 nums 。在一步操作中,移除所有满足 nums[i - 1] > nums[i] 的 nums[i] ,其中 0 < i < nums.length 。
重复执行步骤,直到 nums 变为
非
递减
数组,返回所需执行的操作数。
示例 1:
示例 2:
1 <= nums.length <= 105
1 <= nums[i] <= 109
题目分析:
做该题时,首先想到模
函数接口
定义
:
//T1:查找带头结点的单链表L中第i个节点的值e,头结点数据保存线性表的length
Status GetLinkElem(LinkList L, int i, ElemType &e);
//T2:在带头结点的单链表L中第i个位置之前插入元素e
Status LinkListInsert(LinkList &L, int i, ElemType e);
//T3:在带头结点的单链表L中,删除第i个元素
Status LinkListDelete(LinkList &
给你一个长度为 n 的整数数组,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个
非
递减
数列。
我们是这样
定义
一个
非
递减
数列的: 对于数组中所有的 i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]
示例 1:
输入: nums = [4,2,3]
输出: true
解释: 你可以通过把第一个4变成1来使得它成为一个
非
递减
数列。
关于该题,写这题的原因在于,这题让我回忆起高中的关于
非
严格
递增
的
定义
,觉得很好玩。
题目描述:
给你一个长度为 n 的整数数组,请你判断在最多改变 1 个元素的情况下,该数组能否变成一个
非
递减
数列。
我们是这样
定义
一个
非
递减
数列的:对于数组中任意的 i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]。
示例 1:
输入: nums = [4,2,3]
输出: true
解释: 你可以通过把第一个4变成1来使得它成为一个
非
递减
数列。
示例 2:
输入: nums = [4,2,1]
输出: false
单链表相比数组的优势在于插入删除元素快,不需要移动大量的元素,只需要改变指针的指向,那么插入删除操作的时间复杂度应该是O(1),但是这是不对的,应该分情况讨论。
单链表结构体声明:
typedefstruct LNode
ElemType data;
struct LNode *next;
}LNode,*LinkList;
O(n)的情况:
一个已知头结点的链表(假设足够...
计算循环队列元素个数
zz因为rear的值不一定比front的直大,所以说他俩的差值有可能得到的是负值,故采用这种取模的方式。二如果说rear在正常情况下大于front德华,那么rear与front的差值就是队列的长度
图示解析:
求数组指定元素的地址/求数组元素的下标
一:数组元素的存储
由于数组一般不做插入和删除操作,也就是说只要建立了数组,则结构中的数据元素的个数和元素之间的关系就不再发生变动。因此常采用
顺序
存储结构来表示数组。
由于存储单元是一维的结构,而数组可能是多维的结构,则用一组连续存储单元存放数组的数据元素就有次序约定的问题。如图所示的(a)中的二维数组可以看作是如图所示的(b)所示的一维数组,也可以看做是如...