[算法]一整型数组,除了0之外,其他不重复,判断数组元素是否相邻

数组元素是非负整数,0可以化为任意正整数,要求时间复杂度为O(n)

觉得很奇怪的题目,遍历一次找到最值相减得到极差就行了,如果极差小于数组长度n,则元素相邻,否则不相邻

bool is_adjacent(int* a, int n){
    int min = 65535, max = 0;
    for(int i = 0; i < n; ++i){
        if(!a[i] && a[i] < min){
            min = a[i];
        }
        else if(!a[i] && a[i] > max){
            max = a[i];
        }
        else{}
    }
    if(max - min >= n){
        return false;
    }
    return true;
}

[算法]一整型数组,除了0之外,其他不重复,判断数组元素是否相邻

时间: 2024-12-25 00:19:07

[算法]一整型数组,除了0之外,其他不重复,判断数组元素是否相邻的相关文章

c语言基础-变量(整型)

一.整型变量 类型 关键字 取值范围 存储单元字节数(非固定) 输出 有符号整型 [signed] int -2147483648~2147483647 4 %d 无符号整型 unsigned [int] 0~4294967295 4 %u 有符号短整型 [signed] short [int] -32768~32767 2 %h 无符号短整型 unsigned short [int] 0~65535 2 %hu 有符号长整型 [signed] long long [int] -21474836

数组 两种初始化方式及二维数组

数组: 静态数组  和  动态数组 1.写法: 定义:用来存储一组相同数据类型的元素 * * * * *   数组中存储的元素必须是相同的数据类型 数组的声明  初始化 Int[] a={1,2,3,4}; 数组的初始化: 静态初始化: //方式1 int[] a={'a',2,3,34,3,4,5,6,7,8,7,8,9,0,4,5,6,7,8};//声明的同时初始化 double[] a1={1.2f}; //方式2 int b[]={1,2,3,4}; //方式3: int[] c;  

[算法学习]给定一个整型数组,找出两个整数为指定整数的和(3)

问题描述: 设计一个类,包含如下两个成员函数: Save(int input) 插入一个整数到一个整数集合里. Test(int target) 检查是否存在两个数和为输入值.如果存在着两个数,则返回true,否则返回false 允许整数集合中存在相同值的元素 分析: 与[算法学习]给定一个整型数组,找出两个整数为指定整数的和(2)不同,这里需要算出的是存不存在这两个数,可以在上一篇的基础上修改一下数据结构,HashMap其中key是数值,value是数值个数,然后需要作两步判断,map中存在数

编程题:将数字0~5放入一个整型数组,并逆序输出数组

#include<stdio.h> void main() { int i,a[5]; for(i=0;i<5;i++)         /*给数组中元素赋值*/ a[i]=i; for(i=4;i>=0;i--)          /*逆序输出数组中元素值*/ printf("%3d",a[i]); printf("\n"); } 编程题:将数字0~5放入一个整型数组,并逆序输出数组,布布扣,bubuko.com

给定一整型数组,若数组中某个下标值大的元素值小于某个下标值比它小的元素值,称这是一个反序

[问题] 找出反序的个数 给定一整型数组,若数组中某个下标值大的元素值小于某个下标值比它小的元素值,称这是一个反序. 即:数组a[]; 对于i < j 且 a[i] > a[j],则称这是一个反序. 给定一个数组,要求写一个函数,计算出这个数组里所有反序的个数. [代码] #include <stdio.h> #include <stdlib.h> #include <string.h> int sumNum = 0; void merge(int *a,

整型数组与vector对象之间的相互初始化

#include<iostream> #include<vector> #include<string> using namespace std; int main() { vector<int>::size_type i=0; int arr[10]={0,1,2,3,4,5,6,7,8,9}; //使用整型数组初始化一个vector对象 vector<int> vec(begin(arr),end(arr)); for(auto v:vec)

将一个任意整数插入到已排列的整型数组中,插入后,数组中的数仍保持有序

实现代码: package homework; import java.util.Scanner; public class HomeWork { public static void main(String[] args) { //將输入的数字插入到一个有序的数组中的合适位置 Scanner input = new Scanner(System.in); System.out.println("请输入一个数字:"); int num = input.nextInt(); //有序的整

2014年去哪儿网笔试题--给定一个整型数组,对这个整型素组排序,使得按序拼接数组各元素得到的值最小。

2014年去哪儿网笔试题--给定一个整型数组,对这个整型素组排序,使得按序拼接数组各元素得到的值最小. 我的大致思路是把这个整型数组转换成String数组,然后通过String类的compareTo方法对这个数组进行第一次排序,排序得到的结果恰好是按字典序排序,而字典序又恰好是数字从0-9的顺序,恰好符合这个要求.最后进行检验下,有的可能需要调换下顺序使得数最小. package com.cn.qunar.test; /** * @author 刘利娟 [email protected] * @

定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每五个数求出一个平均值,放在另一个数组中并输出

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> //定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数:然后按顺序每五个数求出一个平均值,放在另一个数组中并输出. var arr = []; var NewArr = []