• 题目:合并数字

消除相邻的差的绝对值为1的两个数中较大的那一个。这一天,她得到了 m 个数字,她只能选出最左边的相邻的差的绝对值为 1 的两个数,保留较小的数,泯灭较大的数,直到没有两个相邻的差的绝对值为 1 的数,问小铭学姐最多可以进行多少次这样的操作?
输入格式

输入第一行为一个整数 n(1 <= n <= 10^5),表示数字的总数第二行为 n 个整数,这些数字的范围为[0, 10^9]。

输出格式

输出一行,为一个整数,表示小铭学姐最多可以进行多少次这样的操作。

Sample Input

4
1 2 0 1

Sample Output

3

  • 分析思路:

知识点:一维动态数组

1.法一:

vector <int> a;    //定义动态数组
int main() {for(int i = 1;i <= n;i ++) a.push_back(i);    //类似队列的数组元素插入 a.pop_back();    //删除末尾元素 cout << a.size() << endl;    //输出数组大小 for(int i = 0;i < n-1;i ++)cout << a[i] << endl;    //输出所有元素
}

2.法二

 int **a=(int**)malloc(m*sizeof(int*));memset(a,0,m*sizeof(int*));for(int i=0;i<n;i++){a[i]=(int*)malloc(n*sizeof(int));memset(a[i],0,n*sizeof(int));}//或者int (*a)[8]=new int[8][8];memset(a,0,8*8*sizeof(int));

3.C++万能头文件:几乎包含所有头文件

#include<bits/stdc++.h>

  1. 方法一:

开辟一个动态数组,顺序遍历

时间超时,不通过,后面改进

  • 代码一:
#include<iostream>
#include<cmath>
#include <cstdio>
#include<cstdlib>
using namespace std;
int main()
{     int n=1000000,i;scanf("%d",&n);int *a=(int *)malloc(sizeof(int)*n);scanf("%d",a);for(int i=0;i<n;i++){for(int j=i+1;j<n;j++){if((a[i]>a[j])&&abs(a[i]-a[j]==1)){n--;}else if((a[i]<a[j])&&abs(a[i]-a[j]==1)){n--;}}}cout<<n<<endl;free(a);return 0;
}


  1. 方法二:利用栈实现
  • 代码二:
#include<iostream>
#include<cmath>
#include<stack>
//#include<bits/stdc++.h>  //万能头文件,几乎包含所有头文件
using namespace std;stack<int> s;
int main(){int n,m,cnt=0;cin>>n;while(n--){cin>>m;while(!s.empty()&&s.top()-m==1){s.pop();cnt++;}if(!s.empty()&&m-s.top()==1)cnt++;else s.push(m);}cout<<cnt<<endl;return 0;
}

合并数字 — m个数字消除相邻的差的绝对值为1的两个数中较大的那一个,直到没有两个相邻的差的绝对值为 1 的数(动态数组定义)相关推荐

  1. 使用位运算技巧比较两个数中较大的数

    使用位运算技巧比较两个数中较大的数 作者:Grey 原文地址: 博客园:使用位运算技巧比较两个数中较大的数 CSDN:使用位运算技巧比较两个数中较大的数 题目要求 如何不要用任何比较判断符(>, ...

  2. c++ std 方法 取两个数的较大_【数据结构C++】两数交换(4种方法)

    一.语言:C++ 二.内容:通过函数调用实现两个数的交换 三.方法: 正常函数交换 引用类型的函数交换 指针类型的函数交换 宏函数定义交换(不常见) #include <iostream> ...

  3. 不用任何比较判断找出两个数中较大的数

    题目: 给定两个32位整数a和b,返回a和b中较大的 要求: 不能做任何比较 第一种方法.得到a-b的值的符号,就可以知道是返回a还是返回b. public int flip(int n){retur ...

  4. 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。

    描述 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target. 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标.注意这里下标的范围是 0 到 n-1. ...

  5. 编写函数求两个数的最大公约数,采用递归法计算两数的最大公约数。

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 题目: [实验案例3:函数的递归调用] 编写函数求两个数的最大公约数,采用递归法计算两数的最大公约数. [实验指导] 分析:m.n为两 ...

  6. 二维动态数组定义及二维静态数组与**P的区别

    矩力集成2008年校园招聘笔试题:动态申请一个二维数组存储图像阵列 传统的解决方案是分配一个指针数组, 然后把每个指针初始化为动态分配的 ``列". 以下为一个二维的例子: //typede ...

  7. HTML数字项目标签千位分隔符,请使用千位分隔符(逗号)表示web网页中的大数字

    一.移动端大数值会默认当作电话号码 在手机等移动设备上,对于超过一定个数的数值,系统默认会当做电话号码处理,而不是一个数字 按照中文用户的使用习惯,有时候个数很多的连续数字其实真的就是一个数字,自动变 ...

  8. python求两个数的最大公约数穷举法_求两个数字的最大公约数-Python实现,三种方法效率比较,包含质数打印质数的方法...

    #coding:utf-8 importtime#辗转相除法: defcommonDivisor1(num1,num2):if num1 temp=num1 num1=num2 num2=tempif ...

  9. python怎么设编程两个数相加时_黄哥Python, LeetCode 第二题两数相加代码

    来源力扣​leetcode-cn.com 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相 ...

最新文章

  1. 拍牌神器是怎样炼成的(三)---注册全局热键
  2. idea junit简单实践
  3. Pipenv和Python虚拟环境
  4. 解析程序员的几个成长阶段
  5. python安装MySQLdb包遇到的坑:EnvironmentError: mysql_config not found
  6. with as 用法_介词with用法
  7. 3.8 高级检索方式(二)
  8. Excel——keil5内存数据进制转换
  9. 树形动规_(访问艺术馆)
  10. bzoj千题计划196:bzoj4826: [Hnoi2017]影魔
  11. 几种影响软件可伸缩性的问题
  12. EXTJS4.0视频教程(网盘下载)
  13. STM32连接射频si4438模块
  14. linux磁盘加密bitlocker,Azure Disk Encryption(Azure磁盘加密)能用在Linux和Windows下
  15. h5页面 请在微信客户端打开链接_如何看到“请在微信客户端打开链接”页面的源码?...
  16. 故障处理 | 网站500,无法打开站点(突然无法打开,代码和服务器没做调整)
  17. bugkuctf 游戏通关玄学式速通
  18. Android 自定义View—月有阴晴圆缺
  19. 如何在Linux系统下的IntelliJ IDEA 2018.3.5下载与安装以及激活教程
  20. 【数据库迁移系列】从MySQL到openGauss的数据库对象迁移实践

热门文章

  1. python画动态图-python画动态图
  2. python是什么课程-吐血整理!程序员喜爱的13个免费Python课程
  3. python爬虫什么意思-终于知道python爬虫是什么意思
  4. python是干什么用的-使用Python究竟可以做什么?下面是Python的3个主要应用
  5. python编程是啥-什么是Python编程课程
  6. 浅谈语音识别技术的发展趋势与应用前景 - 全文
  7. bag of words matlab,Bag of words(matlab实现)
  8. woocommerce产品选项描述修改_简历修改服务:中文修改、英文修改、中英互译、简历定制,名师一对一指导修改!...
  9. html中grid布局,CSS:玩转grid布局
  10. webpack跨域问题记录