指针访问元素

#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<string>
#include<stack>
#include<queue>
#include<map>
#include<cstdlib>
#include<set>
#include<ctime>
#include<vector>
#include<cstdio>
#include<list>
using namespace std;
typedef long long ll;
int INF=2147483647;
int inf=-2147483648;
#define read(x) scanf("%d",&x);
#define fo(i,n) for(int i=1;i<=(n);i++)
#define me(a) memset(a,0,sizeof(a));
#define one(x) cout<<(x)<<endl;
#define two(a,b) cout<<(a)<<" "<<(b)<<endl;
int a[100005];
int main()
{
    ios::sync_with_stdio(false);
    int n;
    cin>>n;
    set<int>q;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
        q.insert(a[i]);
    }
    if(q.size()<=2)
    {
        one("YES");
    }
    else if(q.size()>3)
    {
        one("NO");
    }
    else
    {
        int a=*q.begin();
        int b=*(++q.begin());
        int c=*(++++q.begin());
        if(c-b==b-a)
        {
            one("YES");
        }
        else
        {
            one("NO");
        }
    }
    return 0;
}
时间: 2024-08-05 09:17:47

指针访问元素的相关文章

C---通过指针访问数组

C语言规定:如果指针变量P已指向数组中的一个元素,则P+1指向同一数组中的下一个元素. 引入指针变量后,就可以用俩种方法来访问数组元素了. 如果p的初值为&a[0],则: P+i 和a+i 就是a[i]的地址,或者说它们指向a数组的第i个元素. *(p+i)或*(a+i)就是p+i或a+i所指向的数组元素,即a[i].例如,*(p+5)或*(a+5)就是a[5]. 指向数组的指针变量也可以带下标,如p[i]与*(p+i)等价. 根据以上叙述,引用一个数组元素可以用: 1.下标法:即用a[i]形式

通过指针访问C++对象的私有成员

C++对象的私有成员是禁止类外的访问的.但是我们仍然可以通过指针访问C++对象的私有成员. #include <iostream> using namespace std; class A { public: A(int i = 0) :m_i(i) {} void print() { cout << "m_i" << this->m_i << endl; } private: int m_i; }; int main(int ar

C++的继承操作---基类指针访问派生类问题---基类成员恢复访问属性问题

#include "stdafx.h" #include <iostream> #include <algorithm> using namespace std; class Base { public: int num; virtual void func() { cout<<"Do something in Base"<<endl; } }; class Derived:private Base { public:

C++用指针访问private 成员

// //  main.cpp //  使用指针访问类中的私有变量 // //  Created by 就不告诉你我是谁 on 15-7-25. //  Copyright (c) 2015年 xuqigang. All rights reserved. // #include <iostream> using namespace std; class Class1{ public: Class1(){ } private: int a=10; int k=100; }; int main(i

JPDA 架构研究7 - Agent利用环境指针访问VM(线程组管理篇)

引入: 上篇文章中我们讨论了Agent利用环境指针访问VM的线程操作,这里讨论线程组操作. 分类3:线程组操作 a.GetTopThreadGroups.让Agent获取VM中的所有全局的线程组. jvmtiError GetTopThreadGroups(jvmtiEnv* env,             jint* group_count_ptr,             jthreadGroup** groups_ptr) 函数会返回全局的线程组的数量和线程组的列表. b.GetThre

JPDA 架构研究8 - Agent利用环境指针访问VM(堆栈管理篇)

引入: 上篇文章讲解了Agent利用环境指针访问VM的线程组操作,这里讨论下堆栈操作. 分类4:堆栈操作 a. GetStackTrace.获取某线程的堆栈. jvmtiError GetStackTrace(jvmtiEnv* env,             jthread thread,             jint start_depth,             jint max_frame_count,             jvmtiFrameInfo* frame_buff

JPDA 架构研究9 - Agent利用环境指针访问VM (堆管理篇)

引入: 上文中我们讨论了Agent利用环境指针访问VM的堆栈操作部分,这里我们讨论堆操作部分. 分类5:堆操作 a. GetTag. 获取对象在堆上的唯一标识符(长整型). jvmtiError GetTag(jvmtiEnv* env,             jobject object,             jlong* tag_ptr) b.SetTag.为对象设置堆上的唯一标示符. jvmtiError SetTag(jvmtiEnv* env,             jobje

linux kernel elv_queue_empty野指针访问内核故障定位与解决

1. 故障描述 故障操作步骤: 单板上插了一个U盘,出问题前正在通过FTP往单板上拷贝文件,拷贝的过程中单板自动重启. 故障现象: Entering kdb (current=0xc000000594069e38, pid 4) on processor 0 Oops: <NULL> due to oops @ 0xffffffffc08d3d84 [0]more> [0]kdb> 2. 信息采集 [0]kdb> bt Stack traceback for pid 4 0x

全栈JavaScript之路( 二十五 )访问元素的样式

任何支持style 特性的元素在 ,在其DOM  节点 对象中都有一个 style 属性与之对应. 这个style 对象是 CSSStyleDeclaration类型的实例,包含着html style特性的所有样式信息.但不包含 外部样式或者 内嵌样式层叠而来的样式. 在style特性中,提定的任何css属性,都将表现为这个style 对象的属性.对于使用短划线的的属性名,必须转化为驼峰大小写形式,多数情况下都可以这样转换. 也有例外, float 是javascript 关键字,不能直接转换,