社区
C++ 语言
帖子详情
数组中删除最少数目的元素使其剩余元素先严格单调递增后严格单调递减
shun_qizi_ran
2011-04-22 12:51:04
昨天参加了一个笔试,最后一道笔试题目:
在一个数组中删除最少数目的元素使其剩余元素先严格单调递增后严格单调递减(假设如果数组本身是严格单调的也符合条件)
例如:9,5,6,7,5,6,5,3,1
可删除9和5(第二个)即可:5,6,7,6,5,3,1
感觉挺复杂的,不知哪位大师给点指导
...全文
1521
9
打赏
收藏
数组中删除最少数目的元素使其剩余元素先严格单调递增后严格单调递减
昨天参加了一个笔试,最后一道笔试题目: 在一个数组中删除最少数目的元素使其剩余元素先严格单调递增后严格单调递减(假设如果数组本身是严格单调的也符合条件) 例如:9,5,6,7,5,6,5,3,1 可删除9和5(第二个)即可:5,6,7,6,5,3,1 感觉挺复杂的,不知哪位大师给点指导
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Dylan326-QAZ
2011-10-19
打赏
举报
回复
lz可以这样考虑
首先折点不确定 需要循环试 设为a[i]
那么左侧0~i 求出最长递增子序列(动态规划方法)
i~a.length-1 求出最长递减子序列(动态规划方法)
循环执行上述过程 返回剔除后的数组长度
长度最长即为所需
shun_qizi_ran
2011-04-22
打赏
举报
回复
继续考虑……
shun_qizi_ran
2011-04-22
打赏
举报
回复
[Quote=引用 3 楼 majia2011 的回复:]
memmove
没看出来哪里复杂,貌似很多人只会memcpy
[/Quote]
什么意思呢?
pathuang68
2011-04-22
打赏
举报
回复
[Quote=引用 5 楼 woweiwokuang0000 的回复:]
引用 1 楼 pathuang68 的回复:
这题不难。
楼主给出的示例结果:5,6,7,6,5,3,1
既谈不上严格(所谓严格就是不能有重复的数字),也谈不上递增或者递减。
9,5,6,7,5,6,5,3,1删除最少的数字,使其严格单调的话,结果应该是:
9,5,6,7,5,6,5,3,1
你没看清楚题目啊,是结果里面前面一部分严格递增,后一部分严格递减
[/Quote]
嗯,你说的对,的确没有看清楚。
shun_qizi_ran
2011-04-22
打赏
举报
回复
[Quote=引用 1 楼 pathuang68 的回复:]
这题不难。
楼主给出的示例结果:5,6,7,6,5,3,1
既谈不上严格(所谓严格就是不能有重复的数字),也谈不上递增或者递减。
9,5,6,7,5,6,5,3,1删除最少的数字,使其严格单调的话,结果应该是:
9,5,6,7,5,6,5,3,1
[/Quote]
你没看清楚题目啊,是结果里面前面一部分严格递增,后一部分严格递减
zc806
2011-04-22
打赏
举报
回复
[Quote=引用楼主 woweiwokuang0000 的回复:]
昨天参加了一个笔试,最后一道笔试题目:
在一个数组中删除最少数目的元素使其剩余元素先严格单调递增后严格单调递减(假设如果数组本身是严格单调的也符合条件)
例如:9,5,6,7,5,6,5,3,1
可删除9和5(第二个)即可:5,6,7,6,5,3,1
感觉挺复杂的,不知哪位大师给点指导
[/Quote]
不对吧,LZ的意思是去除最少的数,然后让数组,递增之后又是递减。
我想了个办法,先将各个递增或递减的数组反拆出来,然后对比相邻数组的首和尾大小,删除数组SIZE小的首或者尾即可
majia2011
2011-04-22
打赏
举报
回复
memmove
没看出来哪里复杂,貌似很多人只会memcpy
pathuang68
2011-04-22
打赏
举报
回复
[Quote=引用 1 楼 pathuang68 的回复:]
这题不难。
楼主给出的示例结果:5,6,7,6,5,3,1
既谈不上严格(所谓严格就是不能有重复的数字),也谈不上递增或者递减。
9,5,6,7,5,6,5,3,1删除最少的数字,使其严格单调的话,结果应该是:
9,5,6,7,5,6,5,3,1
[/Quote]
sorry,标记错了,应该是
9,
5,6,
7,
5,
6,5,3,1
pathuang68
2011-04-22
打赏
举报
回复
这题不难。
楼主给出的示例结果:5,6,7,6,5,3,1
既谈不上严格(所谓严格就是不能有重复的数字),也谈不上递增或者递减。
9,5,6,7,5,6,5,3,1删除最少的数字,使其严格单调的话,结果应该是:
9,
5,6,
7,
5,6,
5,3,1
[数据结构]---
单调
栈
递增
(
递减
)
力扣——
单调
数列
如果数组是
单调
递增
或
单调
递减
的,那么它是
单调
的。 如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是
单调
递增
的。 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是
单调
递减
的。 当给定的数组 A 是
单调
数组时返回 true,否则返回 false。 示例 1: 输入:[1,2,2,3] 输出:true 示例 2: 输入:[6,5,4,4...
算法通关村——不简单的数组增删改查
简单数组的增删改查
算法通关村(三)| 数组
给你两个按非
递减
顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的
元素
数目。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个
元素
表示应合并的
元素
,后 n 个
元素
为 0 应忽略。index的位置就是尾部插入,若index等于其他值插入位置就错了(索引从0开始,size正好是尾插的位置)此时可以借助新数组来做,将选择好的放入新
数组中
最后返回。可以从后向前插入,两个数组
元素
数量是固定的,排序后最远的位置一定是最大的。
单调
栈
什么是
单调
栈? 从名字上就听的出来,
单调
栈中存放的数据应该是有序的,所以
单调
栈也分为
单调
递增
栈和
单调
递减
栈
单调
递增
栈:数据出栈的序列为
单调
递增
序列
单调
递减
栈:数据出栈的序列为
单调
递减
序列 ps:这里一定要注意所说的
递增
递减
指的是出栈的顺序,而不是在栈中数据的顺序 这里给大家放一个伪代码: #include<stdio.h> for (遍历这个数组) { if (栈空 || 栈顶元...
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章